为什么我无法在react native中读取状态?

时间:2019-03-20 15:08:39

标签: react-native

我有以下代码:

export default class Testing extends Component {
    state = ({
            data: []
    });

    componentDidMount() {
        this.setState({
                data: this.props.values
        });
        console.log(this.state.posts); //prints empty but if I do
        console.log(this.props.values); //prints the array correctly
    }

在哪里出错,因为我可以打印道具而不是状态?

谢谢

3 个答案:

答案 0 :(得分:1)

您没有在this.state.posts中存储任何内容。您的初始状态仅包含data

另外,在构造初始状态时,您应该这样做:

state = {
  data: []
}

您不需要( )


如果要在存储状态后立即从状态中打印值,则必须使用状态的回调功能。这是由于setState是异步的,需要花费一些时间来设置值。当前,您正在尝试在设置值之前读取该值,请使用如下所示的回调功能。

this.setState({
  data: this.props.values
}, () => console.log(this.state.data));

以下是setState上的一些很棒的文章。

答案 1 :(得分:0)

设置初始状态时不需要( ),因为它是一个对象。

 export default class Testing extends Component {
        state = { //remove (
                data: []
        }; //remove )

答案 2 :(得分:0)

同样值得注意的是,setState是一个异步函数。在setState之后,您将无法直接获取状态。

为了立即获取状态,您需要提供setState()https://reactjs.org/docs/react-component.html#setstate

的回调