gpt4 book ai didi

relayjs - 如何将数据持久化(转储)到本地存储并在以后的 session 中加载?

转载 作者:行者123 更新时间:2023-12-04 12:04:03 25 4
gpt4 key购买 nike

我想保留 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/

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