Javascript React:立即取消定义'this.setState'的状态
为什么在componentWillMount中的相同状态下调用this.setState之后的控制台日志会变得未定义 这个例子将解释这个问题Javascript React:立即取消定义'this.setState'的状态,javascript,reactjs,Javascript,Reactjs,为什么在componentWillMount中的相同状态下调用this.setState之后的控制台日志会变得未定义 这个例子将解释这个问题 constructor(props){ super(props); this.state = { total: 100, length: null, number: null, } } componentWillM
constructor(props){
super(props);
this.state = {
total: 100,
length: null,
number: null,
}
}
componentWillMount(){
let JSONFetchedNumber = 30.20;
this.setState({length: JSONFetchedNumber});
console.log(this.state.length);// getting Null response
let collect = this.state.total/this.state.length;
let result = collect.toFixed(0)/1+1;
this.setState({number: result});// This won't work cus length state in undefined
}
render() {
console.log(this.state.length);// getting 30.20 Successfully
为什么我不能在componentWillMount中立即使用this.setState的状态?它只适用于渲染
我试过使用组件,但它不起作用。只有在render works和我这里的问题中,我不能使用这个。在render中的状态你不应该在javascript中使用长度作为关键字,我很确定这是你的错误
var.length是javascript中获取变量实际长度的工具,其中必须存在冲突。此.setState是一个异步函数,需要时间才能完成。如果要记录状态,确切的方法是将其记录在this.setState的回调中。这应该行得通
this.setState({length: JSONFetchedNumber}, ()=> console.log(this.state.length););
this.setState是一个异步函数。您正试图在状态更新之前访问它。所以,无论您想对状态执行什么操作,都可以在回调函数中执行
this.setState({length:JSONFetchedNumber},()=>{
//Your code which is using state
console.log(this.state)
})