То есть вы хотите удалить только один ключ из объекта Datas? Вот пример удаления только электронного письма.
const { email, ...rest } = immutate.data.Datas
const deleteData = {
...immutate,
data: {
...immutate.data,
Datas: {
...immutate.data.Datas,
...rest
}
}
}
Если Вы хотите UI, уведомляются, когда базовый источник данных изменяется, то Вам нужен своего рода механизм уведомления. Для WPF INotifyPropertyChanged является тем механизмом.
Это - то же в Windows Forms также, но Windows Forms также поддерживают старый механизм уведомления, где у Вас есть событие с именем <Property>Changed
.
Однако ни один из них не потребовал этих механизмов, если все, что Вы хотите сделать, связывают с данными однажды и отображают его.
Если Вы соглашаетесь с не получением уведомлений, то просто связывают с источником данных, и это будет работать.
Истина быть сказанным, я не видел, что случалось так, что плохо, и думают это очень осуществимое решение.
Возьмите этот простой объект Модели данных:
Public Class SimpleItemViewModel
Implements INotifyPropertyChanged
Private _item As String
Public Property Item As String
Get
return _item
End Get
Set (value as string)
_item = value : OnPropertyChanged("Item")
End Set
End Property
Protected Overridable Sub OnPropertyChanged(propChange as string)
Raise Event PropertChanged(me, new PropertyChangedEventArgs(propChange))
End Sub
Public Event PropertyChanged(sender as object, e as PropertyChangedEventArgs)
End Class
Это легко связывается с простым Текстовым полем через:
<Textbox Text="{Binding Item}" />
дополнительно, если я хотел иметь флаг DIRTY, я могу легко поместить флаг, устанавливаемый в OnPropertyChanged sub, и легко определить, должен ли я сохранить какие-либо пользовательские изменения или нет.
Я нашел самым легким иметь ряд классов, которые покоятся между Уровнем доступа к данным и UI, который содержит этот материал. У Вас может даже быть своя Бизнес-логика, и DAL раздают эти классы, а не атомарные значения.
Реализация INotifyProperty
измененный не является особенно трудным, видя, поскольку это только имеет одного участника.
Если Вы не ожидаете, что изменения в основном объекте затем не волнуются о INotifyProperty
измененный, и использование Привязка с Mode=OneTime
.
Если основной объект может измениться, и Вы хотите, чтобы GUI отразил те изменения, то, как еще может, это достигается без вида уведомления это INotifyProperty
измененный обеспечивает? Не разумно ожидать, что связанный объект опросит источник своей привязки.
Лично я нашел, что WPF занял время для понимания с, но теперь, когда я получаю комфорт, с которым я нахожу его невероятно мощным и приятным работать. Я поощряю любого, кто находит, что WPF, бросающий вызов, придерживается его.
При поиске хорошего способа думать о структурировании привязки данных то стремитесь устанавливать DataContext на логическом дереве только однажды, то используйте обязательные пути для заполнения различных частей UI.
Привязка в XAML довольно легка, однако, динамическая привязка данных WPF в коде является болезненной и сбивает с толку.
DataBinding является единственным способом реализовать шаблон образцового представления в WPF/Silverlight. Ваши модели могут быть глупыми UI путем реализации INotifyPropertyChanged, который изолирует их от UI. Это также сохраняет много кода UI при наполнении информации в UI.
Другое преимущество, которым я пользуюсь, является способностью далее связать дочерние элементы управления с теми же данными при помощи {Обязательного} ярлыка.
Во-первых, INotifyPropertyChanged не является единственным способом заставить привязку данных работать - свойства зависимости работают также.
Во-вторых, INotifyPropertyChanged может быть реализован со всего одной строкой кода в Вашем классе объекта при использовании AOP - Вы не должны на самом деле делать всех тех вызовов уведомления сами.
В целом, я сказал бы, что привязка данных является большим благом, особенно при выполнении генерации кода для создания автоматически связанных элементов управления из некоторого источника данных.
Будьте так декларативны, как Вы можете в своей привязке. Позвольте шаблонной системе сделать, это - задание, и сделайте интенсивное использование DataTemplate
s, которые указывают явный DataType
s.