保留查询
为了手动保留查询,以使它引用的数据不被 Relay 回收,我们可以使用 environment.retain
方法
const {
createOperationDescriptor,
getRequest,
graphql,
} = require('relay-runtime')
// Query graphql object
const query = graphql`...`;
// Construct Relay's internal representation of the query
const queryRequest = getRequest(query);
const queryDescriptor = createOperationDescriptor(
queryRequest,
variables
);
// Retain query; this will prevent the data for this query and
// variables from being garbage collected by Relay
const disposable = environment.retain(queryDescriptor);
// Disposing of the disposable will release the data for this query
// and variables, meaning that it can be deleted at any moment
// by Relay's garbage collection if it hasn't been retained elsewhere
disposable.dispose();
注意
Relay 会根据任何渲染数据的已挂载查询组件自动管理查询数据保留,因此通常您不需要在产品代码中直接调用 retain。对于任何高级或特殊用例,查询数据保留通常应该在基础设施级别代码中处理,例如路由器。
此页面是否有用?
通过以下操作帮助我们改进网站: 回答几个简短的问题.