React를 사용하여이 예제에서는 Dexie.js을 구현하고 있습니다. 그러나, 나는 이것이 특히 중요하다고 생각하지 않습니다. React를 사용하여 IndexDB 데이터베이스에서 루프를 실행하는 방법을 알고 싶습니다.루프가있는?
아래 코드에서 볼 수 있듯이 dayta
에는 데이터베이스가 저장되어 있으며 에는 name
및 age
값이 저장됩니다. 내 기능 carveit
이 실행되면 사용자가 입력 한 내용을 취하여 해당 값을 {this.state.etv}
에 배치합니다. 코드가 작동합니다.
그러나 나는 어떻게 {this.state.etv}
모든 항목을 표시 해야할지 모르겠다. 그대로, 가장 최근의 추가 만 보여줍니다. 나는 어떤 종류의 루프를 실행해야하고, map
함수를 사용해야한다는 것을 이해하지만, 그것에 대해 어떻게해야하는지 확신 할 수 없다.
var React = require('react');
module.exports = React.createClass({
getInitialState: function(){
return { etv:'' }
},
carveit:function(){
var enteringtitle = document.getElementById('entertitle').value;
var enteringmessage = document.getElementById('enterentry').value;
var dayta = new Dexie('testcase');
dayta.version(1).stores({
friends:'name, age'
});
dayta.open().catch(function(error){
alert("Oh no son: " +error);
});
dayta.friends.add({
name: enteringtitle,
age: enteringmessage
});
dayta.friends.each((friend)=>{
this.setState({etv: friend.name});
});
},
functionrun:function(){
return (<div>
<ul>
<li>{this.state.etv}</li>
</ul>
<p>Entry Title</p>
<input id="entertitle" type="text" className="form-control"/>
<p>Your Entry</p>
<textarea id="enterentry" className="form-control"></textarea>
<input id="entrytitle" type="submit" value="Publish" onClick={this.carveit} />
</div>);
},
render:function(){
if (this.props.contentadd){
return this.functionrun();
}
else {
return null;
}
}
});
안녕하세요. 구조를 추적 할 때'this.state.etv.map는 함수가 아닙니다. '오류가 발생합니다. –
맞습니다.'this.state.etv'가 배열이 아니라면'map()'함수가 없습니다. 상태 변수는 반복 할 수 있도록 배열이어야합니다. 나의 예를 좀 더 일반적으로 만들어서 오도하지 마라. – Soviut
그래서 etv : [{name : '', age : ''}]'의 getInitialState를 배열로 추가했습니다. 하지만 여전히'this.state.etv.map은 함수가 아닙니다. '라고합니다. 또한, 'var itemElements = this.state.etv.map (function (item, i) {return (li key = {i}> {item.name} li);});' –