Javascript 设置嵌套数组对象的状态?

Javascript 设置嵌套数组对象的状态?,javascript,reactjs,Javascript,Reactjs,如何在数据集中设置值对象的状态。我试图通过以下方法设置状态,但出现了错误 this.setState({ datasets: { ...this.state.datasets, value: labels} }); //国家代码 this.state = { labels: ['January', 'February', 'March', 'April', 'May'], datasets: [

如何在数据集中设置值对象的状态。我试图通过以下方法设置状态,但出现了错误

this.setState({ datasets: { ...this.state.datasets, value: labels} });
//国家代码

this.state = {
            labels: ['January', 'February', 'March',
                'April', 'May'],
            datasets: [
                {
                    label: 'Rainfall',
                    backgroundColor: 'rgba(75,192,192,1)',
                    borderColor: 'rgba(0,0,0,1)',
                    borderWidth: 2,
                    value: [65, 59, 80, 81, 56],
                }
            ]
        }

我不太清楚您想做什么,但我认为问题在于state.dataset是一个对象数组,您没有寻址数组中的特定元素。您可能想尝试以下方法:

this.setState( state => { 
    let newData = state.datasets[0]
    newData.value = labels
    return newData
}

在您所在的州,数据集是一个数组。但是,在setstate调用中,您将其作为对象进行分解。您应该这样做以使其正常工作:

this.setState({ datasets: [ {...this.state.datasets[0], value: labels }] });

什么错误?另外,您应该为
setState
使用函数更新。我得到了错误值。datasets.map不是函数这似乎是一个单独的问题。虽然这可能与设置错误的状态有关,但可能不是吗?请通过更新您的问题来提供更多代码。在第二个答案之后,我看到您的
数据集
是一个数组,您想用传入的
标签来更新它,对吗?因此,
标签
应该替换第一个
数据集
?这是否回答了您的问题?不是更新状态的好方法。不要将任何状态属性指定给变量并对其进行更改。它改变了状态,但我不是直接改变状态。我正在使用函数this.setState。这怎么会是个问题?我想它们是不同的东西。您正在使用功能更新,但仍然会改变当前状态。附言:我不是那个被你否决的人:)@justin这是一个常见的反应错误,它源于对作业/复制的误解。分配
新数据时,然后对其进行变异。我分享的另一个链接很好地解释了React中的错误原因。啊,我没有注意到它是一个数组。好的,对于一个项目,这应该是可行的,我建议在这里使用functional
setState
。同意。我刚刚指出了OP在其原始代码中犯的错误,但我希望他注意到这一点,并在实际代码中使用函数setState。