使用单个Redux还原器来获取和存储多个结果



我想使用Redux对同一个端点执行多个分派以获取不同的响应,但我不确定如何将它们最好地存储在Redux存储中。。。

myAction.js

export const GET_DATA = 'GET_DATA';
export const GET_DATA_SUCCESS = 'GET_DATA_SUCCESS';
export const GET_DATA_ERROR = 'GET_DATA_ERROR';
export const getData = (path) => ({
type: GET_DATA,
agent: agent.getData.get,
agentData: path
});

myReducer.js

export default (state = {}, action) => {
...
switch (action.type) {
...
case GET_DATA_SUCCESS:
newState = action.payload;
break;
...

我会这样称呼API:

const mapDispatchToProps = dispatch => {
getData: path => getData(path);
}
...
// Using dispatch
getData('/myDataPath');

agent.js

...
getData : {
get = path => performGet('https://my.url/data' + path);
}

现在,我知道这对于执行到端点的单个GET并在单个条目下存储在Redux存储中非常有效。

有没有一种方法可以将多个响应存储在Redux商店条目中?

您可以在基于agentData或操作的其他标识部分的状态中使用括号表示法来使用动态属性。

它看起来像这样:

减速器

export default (state = {}, action) => {
...
switch (action.type) {
...
case GET_DATA_SUCCESS:
newState = {
...state, // Keep all the other values (agentData entries)
[action.agentData]: action.payload // Add/overwrite the current one
};
break;
...

最新更新