我在Map对象中有一个不可变的map对象,如下所示:
let initialState = Immutable.fromJS({errors:{}});
如何更新错误Map以添加和删除条目?
例如:
自:
Immutable.fromJS({errors:{}})
要:
Immutable.fromJS({errors:{"foo":"My foo error"}})
要:
Immutable.fromJS({errors:{"foo":"My foo error", "baz": "A baz error"}})
要:
Immutable.fromJS({errors:{"baz": "A baz error"}})
答案 0 :(得分:1)
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="145,40,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120">
<TextBox.Text>
<Binding Path="Test1" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<val:StringToIntValidationRule ValidationStep="RawProposedValue"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
<Validation.ErrorTemplate>
<ControlTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<AdornedElementPlaceholder Grid.Column="0" Grid.Row="0" x:Name="textBox"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding [0].ErrorContent}" Foreground="Red"/>
</Grid>
</ControlTemplate>
</Validation.ErrorTemplate>
</TextBox>
输出:
const initialState = Immutable.fromJS({errors:{}});
const nextState = initialState.setIn(['errors', 'foo'], 'bar').setIn(['errors', 'bar'], 'a bar error');
console.log(nextState.toJS());
const finalState = nextState.deleteIn(['errors', 'bar]);
console.log(finalState.toJS());
```