带有 React 传播运算符的数组中的 SetState
SetState in an array with React spread operator
我的反应状态中有一个值,如下所示:
appointmentsData = {
"05-01-2018": [
{
id: "1",
friendly: "9:00am - 10:00am",
openDateTime: "9:00am",
closeDateTime: "10:00am"
}
]
};
我有一条新数据:
const newAppt = {"06-30-2018":[]}
如何添加到我在州内的数据?我试过了
this.setState({ ...this.state.appointmentsData, ...newAppt});
虽然它似乎没有添加到状态中。我在渲染中得到了与以前相同的值(传播前的 appointmentData)。 newAppt 永远不会添加到状态中。
我正在尝试让我的状态期望输出为:
appointmentsData = {
"05-01-2018": [
{
id: "1",
friendly: "9:00am - 10:00am",
openDateTime: "9:00am",
closeDateTime: "10:00am"
}
],
"06-30-2018": []
};
真的有很多方法可以做到。这是一个:
this.setState(prevState => (
{appointmentsData: {...prevState.appointmentsData}, newAppt}
));
尽管您的方法也应该有效,但前提是您先添加 appointmentsData:
。像这样:
this.setState({appointmentsData: {...this.state.appointmentsData, ...newAppt}});
这会将所有以前的值分散到一个新对象中,加上您要添加的值。
当新状态取决于先前的状态值时,我个人总是使用函数式方式设置状态,但您的方式在这里也很好。
您不应在 newAppt
上使用扩展运算符。只是去:
this.setState({ ...this.state.appointmentsData, newAppt});
。在我看来,newAppt
上的传播运算符没有获得 const
.
的任何数据
我的反应状态中有一个值,如下所示:
appointmentsData = {
"05-01-2018": [
{
id: "1",
friendly: "9:00am - 10:00am",
openDateTime: "9:00am",
closeDateTime: "10:00am"
}
]
};
我有一条新数据:
const newAppt = {"06-30-2018":[]}
如何添加到我在州内的数据?我试过了
this.setState({ ...this.state.appointmentsData, ...newAppt});
虽然它似乎没有添加到状态中。我在渲染中得到了与以前相同的值(传播前的 appointmentData)。 newAppt 永远不会添加到状态中。
我正在尝试让我的状态期望输出为:
appointmentsData = {
"05-01-2018": [
{
id: "1",
friendly: "9:00am - 10:00am",
openDateTime: "9:00am",
closeDateTime: "10:00am"
}
],
"06-30-2018": []
};
真的有很多方法可以做到。这是一个:
this.setState(prevState => (
{appointmentsData: {...prevState.appointmentsData}, newAppt}
));
尽管您的方法也应该有效,但前提是您先添加 appointmentsData:
。像这样:
this.setState({appointmentsData: {...this.state.appointmentsData, ...newAppt}});
这会将所有以前的值分散到一个新对象中,加上您要添加的值。
当新状态取决于先前的状态值时,我个人总是使用函数式方式设置状态,但您的方式在这里也很好。
您不应在 newAppt
上使用扩展运算符。只是去:
this.setState({ ...this.state.appointmentsData, newAppt});
。在我看来,newAppt
上的传播运算符没有获得 const
.