簡體   English   中英

如何使用 react-navigation v5 設置初始狀態以將屏幕包含為歷史記錄?

[英]How can I set the initial state using react-navigation v5 to include screens as history?

假設我有以下路線結構:

Authenticated
    - Main
        - StackA
            -ViewA
        - StackB
            -ViewB
        - StackC
            - ViewC
            - ViewD

我想設置我的初始狀態,以便我查看 ViewD,但我可以從左側滑動以返回 ViewC。

此處的文檔https://reactnavigation.org/docs/navigation-state/#partial-state-objects說我應該能夠提供一組對象,每個對象都有一個映射到路由名稱的name屬性,以初始狀態的routes屬性,它將為我整理其余部分。 但是,當我這樣做時,沒有任何變化,並且呈現通常的初始狀態。

根據上面鏈接的文檔,這是我希望工作的初始狀態:

{
  routes: [
    { name: "Authenticated" },
    { name: "Main" },
    { name: "StackC" },
    { name: "ViewC" },
    { name: "ViewD" }
  ]
}

編輯
我通過使用以下初始狀態設法解決了這個問題:

{
  routes: [
    {
      name: "Authenticated",
      params: {
        screen: "StackC",
        params: {
          screen: "ViewD",
          initial: false,
        }
      }
    }
  ]
}

其中的關鍵部分是initial屬性。 這導致StackC的初始路由在StackCViewD ,這正是我想要的。

這是我在零食上創建的一個快速示例。 基本上,您需要創建一個屏幕數組,並使用重置功能。

    const initialState = {
    index: 4,
    routes: [
      {
        name: 'Stack',
        params: { screen: 'StackView1' },
      },
      {
        name: 'Stack',
        params: { screen: 'StackView2' },
      },
      {
        name: 'Stack1',
        params: { screen: 'Stack1View1' },
      },
      {
        name: 'Stack1',
        params: { screen: 'Stack1View2' },
      },
      {
        name: 'Stack1',
        params: { screen: 'Stack1View3' },
      },
    ],
  };
  return (
    <NavigationContainer initialState={initialState}>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM