25. 为什么要对actionType进行拆分? - yiqunkeke/react-jianshu-shangguigu-zty GitHub Wiki
观察下未拆分的代码:
在组件中:
---- 可以发现,我们的组件中有多个action。每个action都有一个type属性。
import store from './store'
handleInputChange = (e) => {
const action = {
type: 'change_input_value',
value: e.target.value
}
store.dispatch(action)
}
handleBtnClick = () => {
const action = {
type: 'add_todo_item'
}
store.dispatch(action)
}
handleDeleteItem = (index) => {
const action = {
type: 'delete_todo_item',
index: index
}
}
在 reducer 中:
--- reducer中的action.type需要与组件中的写的action中的type属性一致对应。
const defaultState = {
inputValue: '',
list: []
}
export default (state, action) => {
if(action.type === 'change_input_value') {
// ...
}
if(action.type === 'add_todo_item') {
// ...
}
if(action.type === 'delete_todo_item') {
// ...
}
return state
}
这就会存在一个问题:
当我们不小心在reducer中把action中的type值 拼写出错时,会导致功能不起作用。但是同时 控制台压根不会提示任何错误。