Reactjs React Hooks Redux,如何将分派操作分离到特殊操作文件中

Reactjs React Hooks Redux,如何将分派操作分离到特殊操作文件中,reactjs,redux,Reactjs,Redux,我有一个简单的react hooks应用程序,里面有redux,一切都正常工作,但为了组织起见,我希望我的所有动作都在actions.js文件中。除了我不能在react组件外使用react钩子,我还需要使用一些状态 正如您所看到的,当前addActivity action位于调用它的文件中,activity.js文件是什么样子的,这样我就可以从中导出addActivity并将其导入到我的原始文件中?您可以创建所谓的action Creators 将函数addActivity提取到actions

我有一个简单的react hooks应用程序,里面有redux,一切都正常工作,但为了组织起见,我希望我的所有动作都在actions.js文件中。除了我不能在react组件外使用react钩子,我还需要使用一些状态


正如您所看到的,当前addActivity action位于调用它的文件中,activity.js文件是什么样子的,这样我就可以从中导出addActivity并将其导入到我的原始文件中?

您可以创建所谓的
action Creators

将函数
addActivity
提取到
actions.js
,并让它接受两个参数。归根结底,它们只是返回对象的正常函数

// actions.js
export const addActivityAction = (name, duration) => {
  return {
    type: 'CREATE_ACTIVITY',
    payload: {
      name,
      duration
    }
  }
}
并将其导入并在任何地方使用

// AddActivity.js
import { addActivityAction } from 'path/to/actions.js';
const AddActivity = () => {
  ...

  <button onClick={() => dispatch(addActivityAction(data.name, data.duration))}>Add Activity</button>;
}
//AddActivity.js
从'path/to/actions.js'导入{addActivityAction};
常量AddActivity=()=>{
...
dispatch(addActivityAction(data.name,data.duration))}>AddActivity;
}

更多信息:

非常感谢,这将帮助我更好地理解它well@StevanPopovic不客气。另外,请注意,手工声明动作或动作创建者通常不是推荐的redux风格。推荐的方法是使用官方的redux工具包自动生成所有这些工具。关于现代redux的最新介绍,请参阅官方redux教程:@Siddiq Nx我确实投了赞成票,但因为我的分数不到15分,这是我有史以来的第一个问题,出于某种原因,无法看到它:D@phry谢谢,我会调查的