将UI属性添加到状态对象的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

假设我的redux应用程序中有一个初始状态,如下所示:

{
    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中添加新道具,但这是有道理的。我会试一试,非常感谢你的反馈。我已经把它付诸实践,发现它工作得很好@再次感谢你