28.如何使用actionCreator统一创建action? - yiqunkeke/react-jianshu-shangguigu-zty GitHub Wiki

1.创建actionCreator

在store目录下,创建 actionCreators.js 文件

--------在这个文件中创建一些方法

import { CHANGE_INPUT_VALUE } from './actionTypes'

export const getInputChangeAction = (value) => ({
       type: CHANGE_INPUT_VALUE,
       value
})

这样就创建了一个actionCreator,它就是为了帮我们创建action的。

2. 在组件中使用actionCreator

import store from './store'
import { getInputChangeAction } from './store/actionCreators'  // 在组件中引入actionCreator中的方法

handleInputChange = (e) => {
   // 使用actionCreator
   const action = getInputChangeAction(e.target.value)   
    // 执行一次getInputChangeAction方法同时将e.target.value传入这个方法
   // 这个方法执行后,直接帮我们返回了一个对象。这个对象就是我们之前用的action对象、
   // 通过这种方式,我们就把action的创建统一封装到了actionCreator 当中。
   store.dispatch(action)
}

总结 : 由于在封装actionCreator之前,所有的action都是分散在各个业务逻辑当中去创建的。这样就很难统一管理和维护action。

所以,我们通过这种方式封装了一个actionCreator,让这个文件中的函数返回一个action对象给我们。我们在这个 actionCreator中统一去管理action.

这样做的目的主要是为了提高前端代码的可维护性。