reactjs - 如何在功能组件内成功调度 redux 后检索数据
问题描述
基本上,我试图找出最简洁的方法,仅在调度了 redux 操作后才从状态中检索数据。state 中的数据只有在 action 完成后才可用,所以我希望在 state 中的租户数据可用后能够访问该 state 属性。
const dispatch = useDispatch();
const [items, setData] = useState([]);
useEffect(() => {
setLoading(true);
initialFetch();
setLoading(false);
}, []);
const initialFetch = () => {
// dispatches action and sets the tenant data to the state //
dispatch(tenantActions.getAllTenants(page, perPage));
// retrieve data from state //
const data = store.getState();
// DATA DOES NOT EXIST IN THE STATE BY THIS POINT //
setData(data.tenants.items);
// perform some functions with retrieved data //
const cols = tableHelpers.createColumns(items);
setColumns(cols);
}
我的 redux 记录器将请求显示为:
tenants: {loading: true}
成功的动作响应为:
tenants:
items: (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
所以减速器正在工作并正确发送回数据。
我曾尝试使用订阅,但它会导致内存泄漏。UseSelector 在函数中是不可能的,所以这也是不可能的。任何关于最佳处理方式的建议都会非常有帮助。
解决方案
推荐阅读
- mysql - 报表查询中的记录日期
- google-colaboratory - 是否可以在 Google Colab 中进行块评论?
- node.js - 通过带有 Node 的 AWS Lambda 将数据从 React 中的表单发送到 DyanmoDB
- vega-lite - 如何将渲染器指定为 SVG?
- c# - 使用 datetimepicker c# 查询和过滤两个日期之间的数据
- excel - 将行范围复制到命名工作表
- vue.js - 从 sequelize promise vue 设置数据属性值
- javascript - 需要在一个 onDateChange 上调用 2 个不同的函数
- python - 尝试将 csv 加载到 es 时不支持 Content-Type header []
- regex - 在 Google 表格中提取部分字符串