ReactNative:undefined不是对象(this.state.listAccounts)

时间:2016-11-10 08:40:32

标签: reactjs react-native

class Widgets extends Component {
    constructor(props){
        super(props);
        this.state = {
            accessToken: "",
            listAccounts:[],
        }
    }
    componentWillMount(){
        this.setState({listAccounts: this.loadAccountsData()})
    }
    loadAccountsData(){
         //return data from server
    }
    render() {
        return (
                <Content>
                    {this.state.listAccounts.map( (Account) => <Account accountData={Account} />)}
                </Content>
        )
    }
}

上面是我的代码的蓝图。我无法在渲染中访问状态? 错误:undefined不是对象(评估&#39; this.state.listAccounts.map&#39;)

2 个答案:

答案 0 :(得分:1)

您正在异步请求上设置状态。你需要等到响应回来设置你的状态。

class Widgets extends Component {
    constructor(props){
        super(props);
        this.state = {
            accessToken: "",
            listAccounts:[],
        }
    }
    componentWillMount(){
        this.loadAccountsData();
    }
    loadAccountsData(){
         somerequest().then( (response) => {
             this.setState({listAccounts: response});
             // or whatever the data is that your accounts are
         });
    }
    render() {
        return (
                <Content>
                    {this.state.listAccounts.map( (Account) => <Account accountData={Account} />)}
                </Content>
        )
    }
}

答案 1 :(得分:0)

对我来说,这个问题正在发生,因为我认为Hot Reloading在添加之后没有使用新状态构建。手动重新加载iOS模拟器为我解决了这个问题。