【发布时间】:2019-01-27 16:12:27
【问题描述】:
我正在做一个项目,我希望数据分开存储(尽管在单个 redux 存储中)。假设我想区分数据,以下想法是否被视为反模式?
行动:
export const GET_DATA = 'GET_DATA';
export const getData = () => {
return async (dispatch) => {
try {
const data = await axios.get('/data');
return onSuccess(data.data.response);
} catch (err) {
return onError(err);
}
function onSuccess(data) {
dispatch({ type: 'GET_DATA', data });
}
function onError(error) {
dispatch({ type: 'ERROR', error });
}
}
}
减速机:
import * as actionTypes from '../actionTypes';
const initialState = {
data: [],
};
export default (state = initialState, action) => {
switch (action.type) {
case actionTypes.GET_DATA:
return {
...state,
data: action.data
}
default:
return state;
}
};
现在我想将data 分成data0 和data1(s. Action)。我考虑为第二个参数添加另一个属性,该属性被传递给减速器,例如转身:
function onSuccess(clients) {
dispatch({ type: 'GET_DATA', data });
}
进入
function onSuccess(clients) {
dispatch({ type: 'GET_DATA', data, classification: data0 });
}
这将允许我将 Reducer 重写为:
import * as actionTypes from '../actionTypes';
const initialState = {
data0: [],
data1: []
};
export default (state = initialState, action) => {
switch (action.type) {
case actionTypes.GET_DATA:
switch (action.classification) {
case 'data0':
return {
...state,
data: action.data
}
case 'data1':
return {
// ...
}
}
default:
return state;
}
};
但是我不确定这是否被视为反模式?您能否分享您对此的想法或推荐另一种(更好的)解决方案?作为替代方案,我目前看到写了很多动作......例如GET_DATA_DATA0,GET_DATA_DATA1...
谢谢!
【问题讨论】:
标签: reactjs react-native redux store reducers