无法访问嵌套数据

时间:2018-05-15 21:28:11

标签: reactjs react-native

我注意到我无法访问嵌套的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)

0 个答案:

没有答案