27.为什么要使用actionCreator统一管理组件上的action? - yiqunkeke/react-jianshu-shangguigu-zty GitHub Wiki

观察下之前TodoList组件中的代码:

import store from './store' 
import {CHANGE_INPUT_VALUE, ADD_TODO_ITEM, DELETE_TODO_ITEM } from './store/actionTypes'

handleInputChange = (e) => {
    // 在业务逻辑中创建 action
    const action = {       
       type: CHANGE_INPUT_VALUE,
       value: e.target.value
    }
    store.dispatch(action)
}

handleBtnClick = () => {
   // action 分散在各个业务逻辑当中
   const action = {
       type: ADD_TODO_ITEM
    }
   store.dispatch(action)
}

handleDeleteItem = (index) => {
    // action 分散在各个业务逻辑当中
    const action = {
        type: DELETE_TODO_ITEM,
        index: index
    }
}

我们的action都是直接在组件上来创建的。action的创建都分散在各个业务逻辑里面。 这样做不是不行,但是我们通常会使用actionCreator来统一管理页面上的action。

然后 通过actionCreator来创建action。这是一个比较标准正规的流程

当然,像Todolist这种比较简单的功能,action 分散在各个业务逻辑里面也还可以。如果业务逻辑非常复杂的话,你的action到处都是,实际上到之后进行测试和管理都是不太方便的。

所以,我们要把action 拆分到actionCreators 里面。去统一的创建和管理。