Android 从数据库模型进行反应本机提取
我正在尝试从db模型获取到ListView。这是我的密码:Android 从数据库模型进行反应本机提取,android,react-native,react-jsx,Android,React Native,React Jsx,我正在尝试从db模型获取到ListView。这是我的密码: export default class todoDB extends Component { constructor(props) { super(props); this.state = { dataSource : new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}) }; } componentDidMoun
export default class todoDB extends Component {
constructor(props) {
super(props);
this.state = {
dataSource : new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
};
}
componentDidMount () {
this.fetchData();
}
fetchData () {
DB.users.get_all(function(result) {
let data = [];
for(let i = 1; i <= result.totalrows; i++) {
data.push(result.rows[i]);
}
this.setState({
dataSource: dataSource.cloneWithRows(data),
})
});
}
render () {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderList}
/>
);
}
renderList (item) {
return (
<View>
<Text>{item.age}</Text>
</View>
);
}};
将默认类导出到ODB扩展组件{
建造师(道具){
超级(道具);
此.state={
数据源:新建ListView.dataSource({rowHasChanged:(r1,r2)=>r1!==r2})
};
}
组件安装(){
这是fetchData();
}
获取数据(){
DB.users.get_all(函数(结果){
让数据=[];
对于(设i=1;i我尚未测试,但您可以尝试以下方法:
fetchData() {
DB.users.get_all((result) => {
let data = [];
for (let i = 1; i <= result.totalrows; i++) {
data.push(result.rows[i]);
}
this.setState((prevState) => (
{
dataSource: prevState.dataSource.cloneWithRows(data)
}));
});
}
fetchData(){
DB.users.get_all((结果)=>{
让数据=[];
for(设i=1;i(
{
数据源:prevState.dataSource.cloneWithRows(数据)
}));
});
}
更改是:使用箭头函数而不是函数(结果)
来保持此
的范围,并更新以前的状态prevState.dataSource.cloneWithRows(data)
(在您的代码数据源中,此处未定义)
至于为什么要使用prevState
,这是为了保持不变性。这里有更多的信息:这个函数内部(result)仍然绑定到类吗?我想你在fetchData()
中有一个错误,在setState
中它应该是dataSource:this.state.dataSource.cloneWithRows(data)
@kuby我认为你是对的,但是他应该使用prevState
ex:this.setState((prevState,props)=>{})
()