Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在空数组上使用setState时遇到问题_Javascript_Arrays_Reactjs_Setstate - Fatal编程技术网

Javascript 在空数组上使用setState时遇到问题

Javascript 在空数组上使用setState时遇到问题,javascript,arrays,reactjs,setstate,Javascript,Arrays,Reactjs,Setstate,在空数组上使用setState时遇到问题。我的状态中有一个空数组,我正在尝试使用setState从另一个函数填充它 dataProcessing.js: const calculate = () => { let series = [{ name: "Sports", data: [ { name: "Baseball", y: 13 },

在空数组上使用setState时遇到问题。我的状态中有一个空数组,我正在尝试使用setState从另一个函数填充它

dataProcessing.js

const calculate = () => {
    let series = [{
        name: "Sports",
        data: [
            {
                name: "Baseball",
                y: 13
            },
            {
                name: "Football",
                y: 20
            }
    }]

    return series;
  }
  export default calculate;
import calculate from './dataProcessing';

export default class Main extends PureComponent {
  constructor() {
    super();
    this.state = { 
      series: []
    };
  }

  calc = () => {
    this.setState = ({
      series: [... calculate()]
    })
   }  
}
Main.js

const calculate = () => {
    let series = [{
        name: "Sports",
        data: [
            {
                name: "Baseball",
                y: 13
            },
            {
                name: "Football",
                y: 20
            }
    }]

    return series;
  }
  export default calculate;
import calculate from './dataProcessing';

export default class Main extends PureComponent {
  constructor() {
    super();
    this.state = { 
      series: []
    };
  }

  calc = () => {
    this.setState = ({
      series: [... calculate()]
    })
   }  
}

执行
calc()
函数后,
this.state.series
仍然是一个空数组。我做错了什么?提前谢谢

此.setState
是异步的。调用setState后,组件将重新渲染

您可以使用setState的回调来获取新的更新状态

this.setState = ({
   series: [...calculate()];
}, (newState) => {
   console.log(newState);
});

您希望将一个方法绑定到this,并调用this.setState,而不是设置this.setState=

  calc() {
    this.setState({
      series: [... calculate()]
    })
   }  
dataProcessing.js:

const calculate = () => {
    let series = [{
        name: "Sports",
        data: [
            {
                name: "Baseball",
                y: 13
            },
            {
                name: "Football",
                y: 20
            }
        ]
    }]
    return series;
}
export default calculate;
Main.js:

import calculate from './dataProcessing';

export default class Main extends PureComponent {
    constructor() {
        super();
        this.state = {
            series: []
        };
    }

    calc = () => {
        this.setState = ({
            series: [...calculate()]
        }, () => {
            console.log("series", this.state.series)
        })
    }
}

你在哪里检查
this.state.series
?我在render()中调用它