я не о том. что иммутабельность, чистая функция и тп - эта концепция ясна. вопрос в том, как редактировать элементы объекта.
вот пример из оф документации:
1.
export default function todos(state = [], action) {
switch (action.type) {
case 'ADD_TODO':
return state.concat([action.text])
default:
return state
}
}
2.
export default function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
иммутабельность иммутабельностью, но ведь меняется же массив? понятно, что создается новый, но в итоге то приложение синхронизирует свое состояние.
как изменить свойство в объекте? так, как я указал,
return state = {...state, name:action.name}
и по-другому никак?
вы как меняете свойство в объекте?
ведь может же в стейте быть объект? (массив - тот же объект)
например, есть такой стейт:
const store = createStore(reducer)
console.log(store.getState())
// {
// counter: 0,
// todos: []
// obj: {
// key1: prop1,
// key2: prop2,
// key3: prop3,
// key4: prop4,
// ...
// }
// }
и Вам необходимо изменить в obj св-во prop3.
как Вы это сделаете?
_______________________________________________
всё разобрался. только вопрос по способам "Как Вы это сделаете?" актуален. Может я не оптимально просто делаю, может есть способ лучше...