作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想保留 Relay 存储中的某些部分数据,并在以后的 session 中再次加载它以获得更好的用户体验。 (我正在将 Relay 与 React Native 的上下文结合使用)。
数据可以相对较大(最多几千条记录),并且不需要与服务器 100% 同步。
我想跨 session 保留记录,因为我不想每次用户打开应用程序时都重新获取数据。这既会给服务器带来负担,也会带来糟糕的用户体验(加载时间)。
最佳答案
您可以在设置 Relay 时创建的环境文件中访问 Relay 的完整存储。如果您尝试退出控制台 recordSource
你应该看到你的整个存储,并且它应该在每次 Relay 处理新操作(查询/变异/订阅)时更新,所以也许你所要做的就是将它存储在你的持久存储(即 localStorage)中。
例子:
// your-app-name/src/RelayEnvironment.js
import {Environment, Network, RecordSource, Store} from 'relay-runtime';
import fetchGraphQL from './fetchGraphQL';
async function fetchRelay(params, variables) {
console.log(`fetching query ${params.name} with ${JSON.stringify(variables)}`);
return fetchGraphQL(params.text, variables);
}
const recordSource = new RecordSource();
console.log(recordSource);
// Store `recordSource` in persisted storage (i.e. localStorage) here.
if(typeof window !== "undefined") { // optional if you're not doing SSR
window.localStorage.setItem("relayStore", JSON.stringify(recordSource));
}
export default new Environment({
network: Network.create(fetchRelay),
store: new Store(recordSource),
});
关于relayjs - 如何将数据持久化(转储)到本地存储并在以后的 session 中加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38316676/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!