Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我可以在react组件中链接redux promsie操作吗?_Reactjs_Redux_React Redux - Fatal编程技术网

Reactjs 我可以在react组件中链接redux promsie操作吗?

Reactjs 我可以在react组件中链接redux promsie操作吗?,reactjs,redux,react-redux,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]: {

我有一个从服务器获取数据的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
    }),
});
我的减速机是这样的

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
  });
});

根据您的用例,
showAlert
标记保留在组件的本地状态,而不是Redux存储,这是非常好的

以下是它的含义:

使用局部组件状态是可以的。作为开发人员,您的工作是 确定构成应用程序的状态类型,以及每个状态的位置 一个国家应该活下去。找到一个适合你的平衡点,然后走 用它

确定数据类型的一些常用经验法则 放入Redux:

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

非常感谢,但这种模式打破了单向流规则,因为我也将我的组件连接到redux商店,你认为它对吗?是的,很好。请再次检查上述常见经验法则。它们涵盖了大多数案例。另外,请阅读我提到的链接: