React Native ListView dataSource始终为null

时间:2017-10-29 00:13:48

标签: javascript react-native

我有这段代码

  componentWillMount() {
    return fetch("http://10.0.3.2:8080/all", {
        method: "GET",
        headers: {
            Accept: "application/json",
            "Content-Type": "application/json"
        }
    })
        .then(response => response.json())
        .then(responseData => {
            this.ds = new ListView.DataSource({
                rowHasChanged: (r1, r2) => r1 !== r2
            });
            this.setState({
                dataSource: this.ds.cloneWithRows(responseData)
            });
        })
        .catch(error => {
            console.log("error : " + error);
        });
};

它给我带来了api的数据,我已经用console.log(this.state.dataSource)测试了它,结果是 console.log result

但是当我添加代码时

<ListView
    dataSource={this.state.dataSource}
    renderRow={(rowData, navi) => this.renderEvent(rowData, this.props.nav)}
/>

我收到此错误 Error

1 个答案:

答案 0 :(得分:1)

通过在主要组件中添加一个简单的构造函数来解决此问题吗?我想你会遇到这个问题,因为你在初始渲染时还没有收到数据。像

这样的东西
class Test extends Component{
    constructor(props){
        super(props);

        this.state = {
            dataSource = [];
        }
   }

所以当你拥有ListView时,至少它会从最初开始。

希望这会有所帮助,但如果没有,请查看this article,进一步深入解释这一概念。