action
在这个引用中到底做了什么:
export function productsReducer(state = initialState, action)
您共享的语法是一个包含两个参数initialState和一个操作的reducer的语法。
操作是由应用程序触发的。如果你只使用redux,它是通过store.dispatch()
发射的,就像一样
store.dispatch({
type:'UPDATE_SOMETHING',
payload: metadata
});
这个激发的动作然后被你的reducer作为第二个参数接收,它看起来像下面
{
type:'UPDATE_SOMETHING',
payload: metadata
}
现在,reducer可以决定执行或忽略此操作。reducer的典型实现如下所示
export function productsReducer(state = initialState, action) {
switch(action.type) {
case 'UPDATE_SOMETHING':
return {...state, metadata: action.payload},
default:
return state;
}
}
添加一个返回状态的默认情况很重要,这样不执行操作的减少程序就不会修改其状态,因为每个减少程序的返回值都是在调度操作后使用的。
请注意,每个操作都是一个带有强制类型属性的普通对象。当然,您可以使用redux-thunk等中间件对其进行扩展。