从 db-models 响应本机获取

React Native fetch from db-models

我正在尝试从 db-models 获取到 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>
    );
}};

在 运行 之后我没有错误或任何输出,只有空屏幕。 我使用

我还没有测试过,但你可以试试这个:

  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)
      }));

    });
  }

更改是:使用箭头函数而不是 function(result) 来保持 this 的范围并更新以前的状态 prevState.dataSource.cloneWithRows(data)(在您的代码中 dataSource 未在此处定义)

至于为什么要用prevState,就是为了保持不变性。这里有更多信息:https://facebook.github.io/react/docs/react-component.html#setstate