我可以在React组件中链接Redux Promsie动作吗?

时间:2018-07-16 11:09:25

标签: reactjs redux react-redux

我有一个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
  });
});

1 个答案:

答案 0 :(得分:1)

根据您的用例,很好,将showAlert标志保持在组件的本地状态,而不是Redux存储。

Redux official documentation代表以下含义:

  

使用本地组件状态很好。作为开发人员,您的工作是   确定哪种状态组成您的应用程序,以及每种状态在哪里   状态应该活着。找到适合您的平衡,然后走   

     

用于确定应使用哪种数据的一些通用经验法则   放入Redux:

     
      
  • 应用程序的其他部分是否关心此数据?
  •   
  • 您是否需要能够基于此原始数据创建其他派生数据?
  •   
  • 是否使用相同的数据来驱动多个组件?
  •   
  • 能够将状态恢复到给定的时间点(例如,时间旅行调试)对您有价值吗?
  •   
  • 您是否要缓存数据(即,使用已存在的状态而不是重新请求)?
  •