Я новичок в Redx am и в настоящее время на стадии разработки моего приложения. Я надеюсь, что кто-то скажет мне, является ли мой предложенный подход хорошим (или даже действительным в этом отношении) или если есть лучший способ сделать то, что я пытаюсь сделать.
Основная проблема в том, что у меня есть
приложение, которое имеет много объектов, имеющих одинаковую структуру. Для каждого из этих объектов я буду
хочу иметь возможность предварительно обновлять обновления. Было бы неплохо, если бы я мог избежать написания действий для каждого
обновить и вместо этого может исправить более общее обновление.
Вот пример того, как будет выглядеть мое состояние
initialState = {
commonPumpItems:
[
basalRate: {units: ml/hr, activeValue: 125.0, minValue: 3, maxValue: 4},
doseVolume: {units: ml/hr, activeValue: 125.0, minValue:3, maxValue: 4},
doseRate: {units: ml/hr, activeValue: 135.9, minValue: 5, maxValue: 10},
...(about 10 more of these)
],
kvoRate: {status: true, minValue: 0, maxValue: 1}
}
commonPumpItems - это объекты, у которых есть единицы измерения: activeValue, minValue, maxValue.
Я хочу избежать написания стены таких действий, как
updateBasalRateValue()
updatedoseVolumeValue()
updatedoseRateValue()
updateBasalRateUnits()
etc
как я могу структурировать своих создателей действий и редукторов, чтобы у меня было какое-то общее действие, такое как
updateCommonPumpItem(name, propertyToUpdate, newValue)
, который затем можно было бы назвать таковым
updateCommonPumpItem(basalRate, units, ml)
Моя идея - иметь что-то подобное
def updateCommonPumpItem(name, propToUpdate, newValue){
return {type: "update", name, propToUpdate, newValue}
}
Then in Reducer.js have something like this
function reducer(state = initialState, action){
switch (action.type){
case update:
state.commonPumpItems.map( (pumpObject) => {
if (pumpObject.name === action.name){
return Object.assign{{}, pumpObject, {action.propToUpdate: action.newValue}
}
else{
return pumpObject
}
..... bunch of other stuff