我有两个输入,一个用于名字,第二个用于姓氏。并像这样更新:
名字和姓氏的动作创建者:
export const updateFirstName = (text) => {
return {
type: 'UPDATE_FIRST_NAME',
firstName: text,
}
}
export const updateLastName = (text) => {
return {
type: 'UPDATE_LAST_NAME',
lastName: text,
}
}
还有一个额外的输入可以向classNumber
数组添加类信息对象:className
和classes
,这里是它的动作创建者:
// class是一个像{classNumber:1234,className:'science'}这样的对象并传递给action creator:
export const addClass = (class) => {
return {
type: 'ADD_CLASS',
class: class,
}
}
还有三个动作创建者的缩减器:
const DEFAULT_STATE = {
classes: [],
}
export default function(state = DEFAULT_STATE, action) {
switch(action.type) {
case 'UPDATE_FIRST_NAME':
return {
...state,
firstName: action.firstName
}
case 'UPDATE_LAST_NAME':
return {
...state,
lastName: action.lastName
}
case actionTypes.ADD_CLASS:
return {
...state,
classes: [action.class, ...state.classes]
}
default:
return state
}
}
Redux工作正常,并且class
数组中添加了一个新的classes
,但我想知道我是否正确并且正确地遵循了redux练习,比如将新对象添加到现有的数组和更新状态树,并按预期更新状态?
最后,动作创作者应该与减速器完全比较?我应该直接将属性className
和classNumber
传递给动作创建者,并在动作创建者中形成对象,甚至可以在减速器内形成对象,如:
case actionTypes.ADD_CLASS:
return {
...state,
classes: [{
className: action.className,
classNumber: action.classNumber,
}, ...state.classes]
},
而不是先提前形成一个对象class
并将其传递给动作创建者?
谢谢