我有一个redux动作,它从服务器获取数据,我的动作是这样的
export const getFakeData = () => (dispatch) => {
return dispatch({
type: 'GET_FAKE_DATA',
payload: {
promise: axios.get('/test'),
}
});
};
我的减速器是这样的
const reducer = (INITIAL_STATE, {
[GET_FAKE_DATA]: {
PENDING: () => ({
isLoading: true,
}),
FULFILLED: (state, action) => {
const { data } = action.payload.data;
return {
...state,
data,
error: false,
isLoading: false,
};
},
REJECTED: () => ({
isLoading: false,
error: true
}),
});
我要在发送动作后显示成功警报,下面的代码是否打破了关于单向流程的redux原理?
this.props.getFakeData().then(() => {
this.setState({
showAlert: true
});
});
答案 0 :(得分:1)
根据您的用例,很好,将showAlert
标志保持在组件的本地状态,而不是Redux存储。
Redux official documentation代表以下含义:
使用本地组件状态很好。作为开发人员,您的工作是 确定哪种状态组成您的应用程序,以及每种状态在哪里 状态应该活着。找到适合您的平衡,然后走
用于确定应使用哪种数据的一些通用经验法则 放入Redux:
- 应用程序的其他部分是否关心此数据?
- 您是否需要能够基于此原始数据创建其他派生数据?
- 是否使用相同的数据来驱动多个组件?
- 能够将状态恢复到给定的时间点(例如,时间旅行调试)对您有价值吗?
- 您是否要缓存数据(即,使用已存在的状态而不是重新请求)?