reactjs - React/Redux:如何异步或其他?
问题描述
大家好,今天在 Redux 中需要您的帮助...
我有过滤器(你可以在图片上看到)和几个输入(过滤器)用于我的搜索。为了接收舰队信息(过滤器),我需要传递一个“ID”表单客户端......
const clientChange = (event) => {
const client = event.target.value;
const client_id = client.id;
dispatch({ type: "CLIENT_LIST_SELECTION", payload: client_id });
getFleetFilter();
};
那是我在 Form.js 中的函数clientChange
const client_id = useSelector((state) => state.client.selection);
const getFleetFilter = async () => {
dispatch({ type: "FLEET_LIST_REQUEST" });
try {
let res = await getFleet(token, client_id);
let data = res.data.data
dispatch({ type: "FLEET_LIST_LOAD", payload: data });
} catch (err) {
if (err) {
console.log("Error Fleet Data");
console.log(err);
};
};
};
这是我在 Search.js 中的函数getFleetFilter
问题:我在 API 字符串中有未定义的client_id,因为调用函数getFleetFilter比存储在 Redux 中的client_id更快!
问题:如何避免在此处继续使用 Redux?
谢谢!
解决方案
您可以像这样使用 useEffect 回调:
const client_id = useSelector((state) => state.client.selection);
useEffect(() => {
if (client_id) {
getFleetFilter();
}
}, [client_id]);
const clientChange = (event) => {
const client = event.target.value;
const client_id = client.id;
dispatch({ type: "CLIENT_LIST_SELECTION", payload: client_id });
};
const getFleetFilter = async () => {
dispatch({ type: "FLEET_LIST_REQUEST" });
try {
let res = await getFleet(token, client_id);
let data = res.data.data
dispatch({ type: "FLEET_LIST_LOAD", payload: data });
} catch (err) {
if (err) {
console.log("Error Fleet Data");
console.log(err);
};
};
};
推荐阅读
- python - Why my recursive function is giving me an error output?
- laravel - 如何在 laravel 的查询中编写 if 而不破坏链和序列
- java - 从 CSV java 中选择列值的行
- java - 要求 CMS 及其网站架构设计使用相同的 MySQL 数据库
- directx - 通过链接到 Windows 10 SDK 使用 D3D9 字体
- javascript - iPad 的强制方向更改
- docker - 监控和重启 docker 容器
- typescript - 防止 TypeScript 与可能类型列表中的错误值进行比较
- python - 如何迭代具有两个不同标准的列表?
- pandas - 计算这两列中唯一值的数量