我想使用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;
...