Android 从数据库模型进行反应本机提取

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

我正在尝试从db模型获取到ListView。这是我的密码:

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)=>{})
()