所以我有以下对象结构:
const SamplePalette = {
id: 1,
name: "Sample Palette",
description: "this is a short description",
swatches: [
{
val: "#FF6245",
tints: ["#FFE0DB", "#FFA797"],
shades: ["#751408", "#C33F27"]
},
{
val: "#FFFDA4",
tints: ["#FFFFE1"],
shades: ["#CCCB83"]
},
{
val: "#BFE8A3",
tints: ["#E7FFD7"],
shades: ["#95B77E"]
}
]
}
让我们假设这个对象由我的应用程序状态管理,如下所示:
this.state = {
currentPalette: SamplePalette,
}
我的问题是如何更新val
数组中给定样本对象的swatches
属性?或者更一般地说 - 我如何仅更新此对象的片段?
我尝试使用update
帮助器以及弄清Object.assign()
如何工作,但是我没有成功,坦率地说只是看一下例子就不能理解语法。
另外,由于我要修改这个对象,我应该考虑使用Redux吗?
[编辑]
我尝试了@ maxim.sh建议,但没有成功:
this.setState(
{ currentPalette: {...this.state.currentPalette,
swatches[0].val: newValue}
})
答案 0 :(得分:0)
考虑您有新的false
我认为更清晰的方法是获取数组,更新它并放回:
<DataGrid Name="DataGridView" Style="{DynamicResource Datag1}" Margin="0,105,0,0" FontSize="15" CanUserSortColumns="True"
Background="Azure" RowBackground="Aqua" AlternatingRowBackground="DarkGray" ColumnHeaderHeight="45" Foreground="Brown"
CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeColumns="True" CanUserReorderColumns="False" BorderBrush="Black"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="slpos" Binding="{Binding slpos}" Width="20" />
<!-- and so on for each column...-->
</DataGrid.Columns>
</DataGrid>
您还拥有:Immutability Helpers或https://github.com/kolodny/immutability-helper
可用命令
new_swatches