Dizilerle çalışan bir nesne ile çalışan bir redüktör var. Verilen bir dizine göre yuvalanmış dizilerdeki bir değeri değiştirmek istiyorum. Bu kod çalışıyor ama testimi derin dondurucu kullanarak çalışmaya başlayamıyorum. Şanssız endeksi bulmak için http://redux.js.org/docs/basics/Reducers.html kullanarak .map
kullanarak redux örneğine bakmaya çalışıyordum. Herhangi bir fikir?Bir dönüştürücüde belirli bir dizine bağlı olarak iç içe geçmiş dizi değerini değiştirmeden, değiştirilemiyor
export default function myReducer(state = { toDisplay: [] }, action) {
const { type, groupIndex, itemIndex } = action;
const newObject = Object.assign({}, state);
switch (type) {
case actionTypes.TOGGLE_GROUP:
newObject.toDisplay[groupIndex].isSelected = newObject.toDisplay[groupIndex].isSelected ? false : 'selected';
return newObject;
case actionTypes.TOGGLE_ITEM:
newObject.toDisplay[groupIndex].values[itemIndex].isSelected = newObject.toDisplay[groupIndex].values[itemIndex].isSelected ? false : true;
return newObject;
default:
return state;
}
}
DÜZENLEME: bu geldi yararlı bir redux video izledikten sonra meraklı herkes için
: Önerilen gibi
export default function myReducer(state = { toDisplay: [] }, action) {
const { type, groupIndex, itemIndex } = action;
switch (type) {
case actionTypes.TOGGLE_GROUP:
return {
...state,
toDisplay: [
...state.toDisplay.slice(0, groupIndex),
{
...state.toDisplay[groupIndex],
isSelected: state.toDisplay[groupIndex].isSelected ? false : 'selected'
},
...state.toDisplay.slice(groupIndex + 1)
]
};
case actionTypes.TOGGLE_ITEM:
return {
...state,
toDisplay: [
...state.toDisplay.slice(0, groupIndex),
{
...state.toDisplay[groupIndex],
values: [
...state.toDisplay[groupIndex].values.slice(0, itemIndex),
{
...state.toDisplay[groupIndex].values[itemIndex],
isSelected: state.toDisplay[groupIndex].values[itemIndex].isSelected ? false : true
},
...state.toDisplay[groupIndex].values.slice(itemIndex + 1)
]
},
...state.toDisplay.slice(groupIndex + 1)
]
};
default:
return state;
}
}
bir yardımcı/kütüphane kullanma muhtemelen en iyi yoldur ama benim ekip başka bir bağımlılık eklememek istiyor.
React '' 'update'' 'işlev işlevi: https://facebook.github.io/react/docs/update.html –
Immutable.js'yi kullanmayı düşündünüz mü? Tabutun hemen dışında, burada yapmaya çalıştığınız şey için yararlı olabilir. – marcacyr
@RafaelQuintanilha - Mümkünse başka bir bağımlılık eklemekten kaçınmayı umuyordum. Ama gerçekten gerekliyse ona açığım. Şu anda bunlardan herhangi birine sahip olduğum problemlere benzer bir kasa örneği gösteremedim. Ancak kütüphaneleri yeterince anlamadım ancak ... –