将UI属性添加到状态对象的Redux
假设我的redux应用程序中有一个初始状态,如下所示:将UI属性添加到状态对象的Redux,redux,react-redux,Redux,React Redux,假设我的redux应用程序中有一个初始状态,如下所示: { themeParks : [] } { ParkName : "Disney World", NumberOfRides : 25 } { ParkName : "Disney World", NumberOfRides : 25, editing : false } 主题公园对象存储在MongoDB或任何类似的地方: { themeParks : [] } { P
{
themeParks : []
}
{
ParkName : "Disney World",
NumberOfRides : 25
}
{
ParkName : "Disney World",
NumberOfRides : 25,
editing : false
}
主题公园对象存储在MongoDB或任何类似的地方:
{
themeParks : []
}
{
ParkName : "Disney World",
NumberOfRides : 25
}
{
ParkName : "Disney World",
NumberOfRides : 25,
editing : false
}
我的应用程序(通过ajax)获取并在加载时显示主题公园,并允许我执行CRUD操作来添加/删除/编辑主题公园
我的问题是,在应用程序中,合并与UI更改相关且需要包含在状态中的新属性的最佳点是什么?例如,在某个时候,我需要为每个主题公园添加一个“编辑”布尔属性,因此它们看起来如下所示:
{
themeParks : []
}
{
ParkName : "Disney World",
NumberOfRides : 25
}
{
ParkName : "Disney World",
NumberOfRides : 25,
editing : false
}
该“编辑”标志必须是每个主题公园对象的属性,以提供在使用应用程序时使多个主题公园处于可编辑状态的能力,对吗?显然,我不想也不需要在数据库模式中存储此标志,因为它只与UI操作相关
我的第一个猜测是在我的函数中包含这样的逻辑。然后在成功返回数据后执行函数,如下所示,但我不确定:
let ajax = new AjaxHanlder();
let promise = ajax.DoGet('/path/to/api-endpoint');
promise.then((themeParks) => {
themeParks.map((themePark, i) => {
themePark.editing = false;
});
dispatch({type : LOAD_THEME_PARKS, payload : themeParks});
});
另外,由于初始状态为空数组且不知道它,是否有在加载主题公园对象之前提供其定义的约定
在我尝试提高我对redux设计模式的认识时,提前感谢您对此的任何见解:-)我建议将编辑属性添加到您的加载主题公园中。例如,LOAD\u THEME\u PARKS
reducer的一部分可能看起来像:
case LOAD_THEME_PARKS:
return {
...state,
themeParks: action.payload.map(park => park.editing = false)
};
没有想到在reducer中添加新道具,但这是有道理的。我会试一试,非常感谢你的反馈。我已经把它付诸实践,发现它工作得很好@再次感谢你