gpt4 book ai didi

reactjs - Apollo Client 和 React Redux-Toolkit 应该如何进行状态管理?

转载 作者:行者123 更新时间:2023-12-04 07:44:52 26 4
gpt4 key购买 nike

我很困惑。在真正的问题出现之前,让我告诉你我是如何开始的。也许我走错了路。所以你可以建议其他方式

在我们的项目中,我们不使用 graphql 进行登录和注册。注册包含 5 个阶段,我使用了 react redux-toolkit,因为我在管理我的状态时遇到了麻烦。我使用 axios 库进行登录和注册 API 调用。

我使用 redux 将模块拆分为切片。起初听起来很简单。我正在将从 axios 返回的数据设置为相关切片的状态。

例如,在注册第一步之后,我将从 axios 获得的结果设置为 SignUpSlice 状态中的 firstStepData 键。然后我可以从其他步骤访问 firstStepData。

到目前为止,没问题。

我们所有的用户登录后的API请求都是用graphql配置的。问题从这里开始。其实不是问题。我只是不知道该怎么做。

axios支持graphql,但是用法不是我想要的。所以我认为 apollo-client 更适合我的项目。

让我们以设置页面为例。

我的设置页面代码;

const GET_SETTINGS = gql`
...query
`;

const SettingsPage = () => {
const { loading, error, data } = useQuery(GET_SETTINGS);

if (loading) return 'Loading...';
if (error) return `Error!`;

return (
<Settings>
<Logo />
<UpdateForm />
<DeleteButton />
</Settings>
);
};

因此,我可以像这样将数据传输到子组件 <Settings data={data}>但是在嵌套组件中这样传递数据不累吗?或者,如果我想从不属于设置页面的其他组件访问此数据?我如何将这些数据传输到子组件?

在这种情况下,我是否应该按照注册时的方式进行?我是否必须使用 redux 创建 SettingsSlice,然后将数据从 GET_SETTINGS 设置为 SettingsSlice 状态并从其他组件访问?

我的大脑着火了。

最佳答案

Apollo 是一个共享缓存。您可以在每个需要该数据的组件中执行 useQuery(GET_SETTINGS); - 如果它已经在缓存中,则无需执行任何操作。否则它会得到它。

无需在 redux 中复制它 - apollo 现在是您的缓存状态管理器,而 redux 用于所有其他数据。

关于reactjs - Apollo Client 和 React Redux-Toolkit 应该如何进行状态管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67246624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com