reactjs - 何时使用 Redux 从 api 调用中获取数据
问题描述
我在我的项目中采用 Redux 进行状态控制,还采用 Axios 来获取 api。
但是我想知道什么时候应该通过 Redux 使用 API 调用来获取数据(在行动中),什么时候应该直接在组件中进行 api 调用。
是否取决于我是否需要将响应数据存储在 Redux 中(用于在不同组件之间共享)?我可以知道任何最佳实践吗?
通过 Redux 调用 API
export const fetchOptions = () => {
return async (dispatch, getState) => {
const request = await client.query({
query: gqlQueries.getQuery,
});
const options = await request;
dispatch({
type: types.FETCH_DATA_END,
options: options
});
}
}
直接在组件中调用API:
const axios = require("axios");
useEffect(() => {
axios({
url: 'http://localhost/graphql',
method: 'post',
data: {
query: `
query PostsForAuthor {
author(id: 1) {
firstName
posts {
title
votes
}
}
}
`
}
}).then((result) => {
console.log(result.data)
});
}, []);
解决方案
如果多个组件使用相同的数据,redux 会在那里大放异彩。当您不希望显示任何陈旧的数据时,首选组件中的 API 调用,因此每次安装组件时都调用 api 并且您的数据始终与后端同步。可能还有其他一些标准,但这两个标准可以帮助我决定将状态保留在哪里。
推荐阅读
- php - 使用用户名或电子邮件登录 Laravel fortify 验证失败
- django - 添加 django 子模型时发送信号的问题
- ios - iOS 骨架加载动画
- python - 当 numpy 数组具有不同类型时,numpy tobytes 结果的格式是什么?
- sql - 散列对 SQL 中的相同输入给出不同的结果
- reactjs - 如何使用 React 从 url 获取参数?
- amazon-web-services - 使用 PuTTY 连接到 AWS 总是超时。有什么理由吗?
- c++ - WinAPI GUI 看起来很奇怪。应使用默认的 Windows 样式
- c# - 嵌套 for 循环问题 - 需要帮助
- apache-zookeeper - 通过zookeeper连接时如何确定选择了哪个Apache Drill钻头?