【发布时间】:2016-08-28 10:21:32
【问题描述】:
我想从已经从 componenDidMount 调用的异步函数中向 render() 显示状态值,但在第一个执行组件中它返回未定义,第二次尝试显示正确的数据
这是我的状态this.state.userData
我的问题是,render() 和 componentDidMount() 之间的优先处理函数是什么?
这是我的代码
componentDidMount: function(){
store.get('userData').then((val) => {
if(typeof val != 'undefined'){
this.setState({'userData':val});
}
}).done();
},
render: function() {
return(
<View>
<Text>{this.state.userData}</Text> // displaying undefined
</View>
);
}
【问题讨论】:
-
似乎代码按预期工作。使用 promise 对象不会阻塞主线程(这就是 promise obj 的用途)。在调用 store.get(..) 调用渲染函数并查找 userData 但它在第一次渲染中不存在,因为 setState({'userData':val}) 没有工作并导致第二次渲染。如果您在 getInıtıalState() 中使用 '' 空字符串添加此状态,您将不会看到未定义。您正在尝试解决 undefined in componentdid mount 但没有任何问题。
标签: javascript android reactjs react-native