我希望从Relay存储中保留一些数据部分,并在以后的会话中再次加载它以获得更好的用户体验.(我正在使用Relay with react native for context).
数据可以相对较大(最多几千条记录),并且不需要与服务器同步100%.我希望跨会话保留记录,因为我不希望每次用户打开应用程序时都重新获取数据.这将是服务器的负担和糟糕的用户体验(加载时间).
小智 1
您可以在设置 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),
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |