javascript - action redux 未定义,未获取数据
问题描述
我正在尝试创建一个将贷款请求发送到多封电子邮件的函数,但是 redux 操作出现问题没有收到数据。
这是 action.js 代码库:
export const updateUserLoanRecipientRequest = ({ recipientRequestDetails }) => (
dispatch,
getState,
) => {
const state = getState();
const userAuthToken = selectUserAuthToken(state);
const currentLoanRequest = selectCurrentLoanRequest(state);
const joinedLoanDetails = {
...currentLoanRequest.recipientRequestDetails,
...recipientRequestDetails,
};
console.log("recipientRequestDetails: ", recipientRequestDetails)
return updateLoanRequest({
userAuthToken,
loanDetails: { ...currentLoanRequest, recipientRequestDetails: joinedLoanDetails },
})
.then(data => {
dispatch({ type: UPDATE_LOAN_REQUEST, payload: data });
return data;
})
.catch(error => {
console.log("ERROR UPDATING USER LOAN");
triggerGenericNotification(dispatch, error);
});
};
这是我发送数据的按钮功能:
const [inputFields, setInputFields] = useState([
{ id: uuidv4(), relationship: 'parent', initiatorMessage: '', email: '' }]);
const sendNow = () => {
const recipientPayloadToUpdate = inputFields?.map(i => {
return i
})
console.log("recipientPayloadToUpdate: ",
recipientPayloadToUpdate);
updateUserLoanRecipientRequest(recipientPayloadToUpdate).then((res) => {
}
}
这是我的 console.log(recipientPayloadToUpdate):
recipientPayloadToUpdate:
0:
email: "nnhan3640@gmail.com"
id: "f6625773-79c6-48c4-bc16-7c63acb5cc93"
initiatorMessage: ""
relationship: "parent"
并且 console.log 的操作是未定义的。
有谁知道我为什么没有定义?
解决方案
updateUserLoanRecipientRequest
从具有属性的对象形式的参数中解构recipientRequestDetails
。您正在传入一个没有该属性的对象。
你很可能想通过
updateUserLoanRecipientRequest({ recipientRequestDetails: recipientPayloadToUpdate})
此外,您很可能打算发送该操作:
const dispatch = useDispatch();
const sendNow = () => {
// ...
dispatch(updateUserLoanRecipientRequest({ recipientRequestDetails: recipientPayloadToUpdate})).then(...)
如果您在connect
这里使用,这在技术上确实有效(只要您使用updateUserLoanRecipientRequest
from props
),但我真的想鼓励您使用react-redux
钩子(在这种情况下useDispatch
,而不是connect
.connect
几乎是与类组件兼容的遗留 api在此刻。
另外,我想指出的是,您通常在这里编写一种非常过时的 Redux 风格,我们不再教授用于生产用途。现代 Redux 不使用 switch..case reducer、ACTION_TYPEs、不可变的 reducer 逻辑connect
。
我强烈建议您阅读官方 Redux 教程以了解现代实践:https ://redux.js.org/tutorials/essentials/part-1-overview-concepts
推荐阅读
- excel - Excel 中的宏将两个工作簿中的特定范围复制/粘贴到新工作簿中(更多详细信息在里面)
- javascript - 运行 fetch POST 请求时出现 404 错误
- python - 有没有办法将 docx 转换为 pdf 而无需在 python 中安装 word?
- python - 在异步模式下运行多个 Celery 工作人员时失去与数据库的连接
- javascript - 在不使用发射的情况下跟踪父级中的子组件值?
- curl - 将 pageToken 添加到对 Google Cloud API 的 curl 请求
- javascript - 直接点击图标时不传递按钮的值属性
- python - 查找低外观计数值
- keycloak - Keycloak客户端baseurl不接受没有http的url
- node.js - 在带有 CloudBuild 的 App Engine 上部署 VueJs + Node 应用程序