我有以下代码:
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
}
在哪里出错,因为我可以打印道具而不是状态?
谢谢
答案 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
的回调