loadEntryPoint
loadEntryPoint
此函數設計為與 EntryPointContainer
一起使用,以實作「隨取即渲染」模式。
除非在不再被參考時對它們調用 .dispose()
,否則從 loadEntryPoint
返回的進入點參考會將資料洩漏到 Relay 儲存區(如果它們有相關的查詢)。因此,請盡可能優先使用 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 Environment 執行個體的提供者,用於執行請求。如果您在 React 元件中的某處開始此請求,您可能需要使用從使用useRelayEnvironment
取得的環境。EntryPoint
:要載入的進入點。entryPointParams
:將傳遞給 EntryPoint 的getPreloadProps
方法的參數。
Flow 類型參數
TEntryPointParams
:對應於 EntryPoint 的getPreloadProps
方法的第一個參數類型的類型參數。TPreloadedQueries
:傳遞給 EntryPoint 元件的queries
參數的類型。TPreloadedEntryPoints
:傳遞給 EntryPoint 元件的entrypoints
參數的類型。TRuntimeProps
:傳遞給EntryPointContainer
的props
屬性的類型。此物件也會以props
的形式傳遞到 EntryPoint 元件。TExtraProps
:如果 EntryPoint 的getPreloadProps
方法傳回具有extraProps
屬性的物件,則這些額外的屬性將會以extraProps
的形式傳遞到 EntryPoint 元件。TEntryPointComponent
:EntryPoint 的類型。TEntryPoint
:EntryPoint 的類型。
傳回值
具有以下屬性的進入點參考
dispose
:一個方法,可以從儲存區釋放此 EntryPoint 載入的任何查詢參考(包括間接方式,透過其他 EntryPoint)。這可能會導致這些查詢參考所參考的資料被垃圾收集。
傳回值的確切格式是不穩定的,並且極有可能變更。我們強烈建議不要使用傳回值的任何其他屬性,因為此類程式碼在升級到 Relay 的未來版本時極有可能損壞。相反地,請將 loadEntryPoint()
的結果傳遞給 EntryPointContainer
。
行為
- 當調用
loadEntryPoint()
時,EntryPoint 的每個關聯查詢(如果有的話)都會載入其查詢資料和查詢 AST。一旦查詢 AST 和資料都可用,資料將被寫入儲存區。這與prepareEntryPoint_DEPRECATED
的行為不同,後者僅在用usePreloadedQuery
呈現該查詢時才會將關聯查詢中的資料寫入儲存區。 - Relay 儲存區將保留 EntryPoint 參考的關聯查詢參考,防止資料被垃圾收集。一旦您在 EntryPoint 參考上調用
.dispose()
,關聯查詢中的資料將很可能被垃圾收集。 - 如果
loadEntryPoint
在 React 的渲染階段期間被調用,則可能會擲回錯誤。
這個頁面有用嗎?
請透過 回答幾個快速問題,幫助我們讓網站變得更好.