繁体   English   中英

setState到对象内部的Array

[英]setState to an Array inside an object

这就是我的Chart组件中的状态。 我从我的数据库(带有componentDidMount)中获取城市数据和关注者数据,我想将城市设置为chartData内的lables数组,并将关注者(包含数字的数组)设置为数据数组,但是我无法获取它完成。 最好的方法是什么?

state = {
  chartData: {
    labels: [here],
    datasets: [
      {
        label: 'Population',
        data: [here],
        backgroundColor: [
          'rgba(255, 99, 132, 0.6)',
          'rgba(54, 162, 235, 0.6)',
          'rgba(255, 206, 86, 0.6)',
          'rgba(75, 192, 192, 0.6)',
          'rgba(153, 102, 255, 0.6)',
          'rgba(255, 159, 64, 0.6)',
          'rgba(255, 99, 132, 0.6)'
        ]
      }
    ]
  }
}

授予您要在其中添加关注者的datasets数组中只有一个对象,您可以像这样更新状态:

 class App extends React.Component { state = { chartData: { labels: [], datasets: [ { label: "Population", data: [], backgroundColor: [ "rgba(255, 99, 132, 0.6)", "rgba(54, 162, 235, 0.6)", "rgba(255, 206, 86, 0.6)", "rgba(75, 192, 192, 0.6)", "rgba(153, 102, 255, 0.6)", "rgba(255, 159, 64, 0.6)", "rgba(255, 99, 132, 0.6)" ] } ] } }; componentDidMount() { setTimeout(() => { this.setState(prevState => { const cities = ["foo", "bar", "baz"]; const followers = [1, 2, 3]; return { chartData: { ...prevState.chartData, labels: cities, datasets: [ { ...prevState.chartData.datasets[0], data: followers } ] } }; }); }, 2000); } render() { return <div>{JSON.stringify(this.state)}</div>; } } ReactDOM.render(<App />, document.getElementById("root")); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> <div id="root"></div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM