reactjs - Redux 中的操作创建者给出错误:TypeError: Cannot read property 'filter' of undefined
问题描述
我有一份客户名单。添加新客户端时,我希望操作创建者检查客户端名称是否已存在,如果存在,则显示错误。我用来确定具有该名称的客户端是否已经存在的 filter() 方法不起作用......我做错了什么?
行动:
export const addClient = (client) => {
return(dispatch, getState) => {
console.log('state: ' + JSON.stringify(getState()));
let clientList = getState().clientList;
console.log('clientList: ' + clientList);
if (clientList && clientList.map( client => {
return client.name;
}).includes(client.name))
{ return ( dispatch({type: 'ADD CLIENT ERROR'}) ) }
else { dispatch({type: 'ADD CLIENT', client}) }
}
}
减速器:
const initState = {
clientList: [],
clientErr: null,
};
const clientReducer = (state = initState, action) => {
switch (action.type) {
case 'ADD CLIENT ERROR':
console.log('add client failed');
return {
...state,
clientErr: 'A client with this exact name already exists, please try again.',
};
default:
return state;
}
};
export default clientReducer;
添加客户端的按钮工作正常,调度被发送到操作,但这就是我得到错误的地方。
解决方案
getState 是一个 Redux 方法,在这里您尝试通过点符号访问对象属性。您可以在这里做的是解构从此方法返回的值,如下所示:
const {
clients: { clientsList },
} = getState();
然后在你的 if 语句中过滤它。
推荐阅读
- docker - 使用 docker-compose 将文件放入 HDFS
- kubernetes - HTTPS 请求重定向到 HTTP
- android - 如何使用处理程序创建计时器
- sql - Node js 向 SQL Server 发出请求,返回结果
- microsoft-graph-api - 在 Microsoft Graph 中获取附加消息的附件
- javascript - Javascript 函数在 Google 检查功能中触发,但并非如此
- python - 如何使用网格而不是包使我的 python 滚动条可滚动和画布自动调整大小
- linux - 在 bash case 语句中出现语法错误
- excel - 增加范围
- xslt - 如何比较同一组的兄弟姐妹?