loadEntryPoint
loadEntryPoint
此函数旨在与 EntryPointContainer
一起使用,以实现“边渲染边获取”模式。
从 loadEntryPoint
返回的入口点引用将数据泄漏到 Relay 存储(如果它们具有关联的查询),除非在它们不再被引用时调用 .dispose()
。因此,尽可能使用 useEntryPointLoader
,它可以确保正确地为你处置入口点引用。有关更完整的示例,请参阅 useEntryPointLoader
文档。
const EntryPoint = require('MyComponent.entrypoint.js');
const {loadQuery} = require('react-relay');
// Generally, your component should access the environment from the React context,
// and pass that environment to this function.
const getEntrypointReference = environment => loadEntryPoint(
{ getEnvironment: () => environment },
EntryPoint,
{id: '4'},
);
// later: pass entryPointReference to EntryPointContainer
// Note that EntryPoint references should have .dispose() called on them,
// which is missing in this example.
参数
environmentProvider
:用于在其中执行请求的 Relay 环境实例的提供程序。如果你在 React 组件中的某个地方启动此请求,你可能想要使用从使用useRelayEnvironment
获得的环境。EntryPoint
:要加载的入口点。entryPointParams
:将传递给入口点的getPreloadProps
方法的参数。
流类型参数
TEntryPointParams
:与入口点的getPreloadProps
方法的第一个参数的类型相对应的类型参数。TPreloadedQueries
:传递给入口点组件的queries
参数的类型。TPreloadedEntryPoints
:传递给入口点组件的entrypoints
参数的类型。TRuntimeProps
:传递给EntryPointContainer
的props
道具的类型。此对象也被传递给入口点组件,也作为props
。TExtraProps
:如果入口点的getPreloadProps
方法返回一个包含extraProps
属性的对象,这些额外的道具将作为extraProps
传递给入口点组件。TEntryPointComponent
:入口点的类型。TEntryPoint
:入口点的类型。
返回值
具有以下属性的入口点引用
dispose
:一个方法,将释放由此入口点加载的任何查询引用(包括间接地,通过其他入口点)不被存储保留。这可能导致这些查询引用引用的数据被垃圾回收。
返回值的确切格式不稳定,很可能会改变。我们强烈建议不要使用返回值的任何其他属性,因为这种代码在升级到 Relay 的未来版本时很可能会出现问题。相反,将 loadEntryPoint()
的结果传递给 EntryPointContainer
。
行为
- 当调用
loadEntryPoint()
时,入口点的每个关联查询(如果有)将加载它们的查询数据和查询 AST。一旦查询 AST 和数据都可用,数据将被写入存储。这与prepareEntryPoint_DEPRECATED
的行为不同,后者只会在关联查询使用usePreloadedQuery
渲染时将数据从关联查询写入存储。 - 入口点引用的关联查询引用将被 Relay 存储保留,防止其数据被垃圾回收。一旦你调用入口点引用上的
.dispose()
,关联查询的数据就有可能被垃圾回收。 - 如果在 React 的渲染阶段调用
loadEntryPoint
,它可能会抛出错误。
此页面是否有用?
通过以下方式帮助我们使网站变得更好 回答几个简短的问题.