我注意到我无法访问嵌套的js对象。
this.DB.get(2)
以
{
id:1,
name: "my title",
Obj:{en:"english",fr:"french"}
}
这是组件
export default class Item extends Component {
state = {
Item:{}
}
constructor(props) {
super(props);
}
componentDidMount(){
this.DB = $DB()
this.setState({
Item: this.DB.get(2)
})
}
render() {
const { params } = this.props.navigation.state;
const id = params ? params.id : null;
const Item = this.state.Item
return (
<View style={{flex:1}}>
Number field: {Item.id} |
String field: {Item.name} |
Object field: <FlatList data={Object.entries(Item.Obj)} />
</View>
);
}
}
问题:我无法访问Item.Obj
。
我知道了,setState
是异步的,我不确定这是否会导致问题。无论如何:在setState回调中是否有一种简洁的方法来渲染组件?
编辑:我刚刚重建(仍处于调试模式),现在它可以正常工作,我没有改变任何内容,只是添加了一些console.log()
。
无论如何,我感觉不那么安全。 setState()是异步的,我仍然在网络上看到这个函数疯狂使用,因为它会同步。 如果我要呈现的数据处于状态,是否有办法在状态更新后呈现组件总是?
另一个疑问:你看到了Component,它只是访问一个大的JS对象并显示了一些数据,这就是全部。我真的需要通过组件状态吗?
如果我在render()
方法中移动这两行,你觉得怎么样?
const DB = $DB()
const Item = DB.get(2)