为什么我无法在 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
    }

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

谢谢

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

当您构建初始状态时,也应该这样做:

state = {
  data: []
}

您不需要周围的( )


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

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

这是setState上的一些很棒的文章。

  • https://medium.learnreact.com/setstate-is-asynchronous-52ead919a3f0
  • https://medium.learnreact.com/setstate-takes-a-callback-1f71ad5d2296
  • https://medium.learnreact.com/setstate-takes-a-function-56eb940f84b6

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

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

也值得注意,setState是异步函数。您将无法在SetState之后直接获得Statate。

为了立即获得状态,您将提供对setState()https://reactjs.org/docs/react-component.html#settate

的回调。

相关内容

  • 没有找到相关文章

最新更新