reactjs - 只需使用 action creators、redux 和 thunk 将对象添加到空数组
问题描述
我想简单地将一个新的“客户”添加到clientList
位于我的clientReducer
. 我可以清楚地看到一切都在工作,因为当我console.log(state)
在 my中时clientReducer
,我可以看到来自输入的信息已经通过调度、动作创建者并且现在在减速器中。我的问题是这里的这段代码......我正在尝试继续将客户端添加到我的 redux 商店。
我尝试使用this.setState({})
但它不读取它。
这是clientActions
:
export const addClient = (client) => {
return(dispatch, getState) => {
dispatch({type: 'ADD CLIENT', client})
}
}
这是clientReducer
:
const initState = {
clientList: []
}
const clientReducer = (state = initState, action) => {
switch (action.type) {
case 'ADD CLIENT' :
let clientList = [...state.clientList, action.client];
this.setState({
clientList : clientList
})
return state;
default : return state;
}
}
export default clientReducer
解决方案
您无需setState
在 reducer 内部执行操作,而是返回更新后的状态。
const clientReducer = (state = initState, action) => {
switch (action.type) {
case 'ADD CLIENT' :
let clientList = [...state.clientList, action.client];
return {
...state,
clientList : clientList
}
default : return state;
}
}
export default clientReducer
推荐阅读
- google-sheets - 用谷歌表格中的两个日期标准范围计算真假总数
- flutter - 如何将标记添加到`MapboxMap` Flutter 小部件
- c - 为什么这两个字符数组不能正确连接?(C 编程)
- javascript - TypeScript 编译器处理的 JavaScript 文件中的 TS2339 错误
- c# - 来自 C# 的多行 Powershell 块
- scala - zio 断言代数数据类型的子类型
- mysql - MySQL重新启动后表缺少表空间
- javascript - 如何在 React 中获取动态创建的输入和选择值?
- javascript - 仅在我的 Firebase 托管网站中访问 Firebase 存储 URL
- java - Java递归和人口增长模型