Reactjs 需要帮助设计Redux应用程序(减少所需操作的数量)
我是redux am的新手,目前正处于应用程序的设计阶段。我希望有人能告诉我,我提出的方法是否好(或者在这方面是否有效),或者是否有更好的方法来完成我正在尝试的事情 主要问题是我有 具有多个具有相同结构的对象的应用程序。对于这些对象中的每一个,我将 希望能够执行更新。如果我可以避免为每个人写一个动作,那就太好了 更新,而不是权利更一般的更新 下面是我所在州的一个例子Reactjs 需要帮助设计Redux应用程序(减少所需操作的数量),reactjs,react-native,react-redux,Reactjs,React Native,React Redux,我是redux am的新手,目前正处于应用程序的设计阶段。我希望有人能告诉我,我提出的方法是否好(或者在这方面是否有效),或者是否有更好的方法来完成我正在尝试的事情 主要问题是我有 具有多个具有相同结构的对象的应用程序。对于这些对象中的每一个,我将 希望能够执行更新。如果我可以避免为每个人写一个动作,那就太好了 更新,而不是权利更一般的更新 下面是我所在州的一个例子 initialState = { commonPumpItems: [
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
我意识到没有必要把事情弄得这么复杂。我可以将它们作为属性存储在对象中,而不是将它们存储在数组中。这是一种更好的方法,因为它消除了在my reducer中搜索特定项的需要。所有操作都是对象。它们是如何创建的完全取决于您——只需编写一个函数即可。@DaveNewton用一个更具体的例子更新了这篇文章,说明了我的想法。以这种方式存储commonPumpItems对我来说有意义吗?然后每次我想要更新时,都必须循环遍历它们以找到我想要更新的那个?有没有更好的方法这就是动作创作者的目的。你要传入对象和类似的东西,然后说出它是什么类型的对象,动作创建者就会像工厂一样,返回一个函数(或动作)来匹配你需要的。