reactjs - Apollo 客户端从服务器无缝加载和合并数据
问题描述
查看示例代码:https ://www.apollographql.com/docs/tutorial/mutations/
假设登录表单突变返回 JWT 令牌以及用户配置文件。有没有办法将用户配置文件保存到客户端缓存,以便我们可以立即显示包含这些数据的“主页”页面?
换句话说,因为我们已经去服务器进行身份验证,服务器返回数据开始立即向用户显示一些东西。
我不想编写纯粹的客户端数据,例如isLoggedIn
. 我想以主页可以从缓存或服务器读取的方式写入整个配置文件数据,就像我们通常使用的那样useQuery(...)
解决方案
我想到了。这很简单。
const client = useApolloClient();
const [loginUser, { loading }] = useMutation(LOGIN_USER, {
onCompleted(result) {
const membership = _.get(result, 'loginUser.`profile`');
const loginUserResult = _.get(result, 'loginUser');
sessionStorage.setItem(
'auth', '...'
);
client.writeData({ data: { profile } });
},
});
然后当主页呈现时,配置文件数据在本地缓存中可用,graphql 不会再次请求配置文件
推荐阅读
- javascript - 通过附加脚本调用 javascritp window.onload api
- php - mysql中的Wordpress数据库连接问题
- python - 复制时删除控制台三尖括号
- selenium - Selenium 如何将带有选项的 WebDriver 传递给其他函数 [Kotlin]
- powershell - PowerShell - ScriptBlock 到可迭代类型
- flutter - 从列中删除空间
- python - 如何通过 PyQt5 中的变量添加颜色、背景颜色值?
- java - 如何使用 jtable 中的布尔值来使进度条工作?
- algorithm - 我无法解决与主功率模 1e9+7 相关的问题。我认为要解决这个问题,我们必须使用构造算法
- java - 错误:EmailException (Java):将电子邮件发送到以下服务器失败:smtp.gmail.com:465