Javascript React:立即取消定义'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

为什么在componentWillMount中的相同状态下调用this.setState之后的控制台日志会变得未定义

这个例子将解释这个问题

    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)
})