【问题标题】:useIonViewWillEnter has default value of state variable upon re-entry of pageuseIonViewWillEnter 在重新进入页面时具有状态变量的默认值
【发布时间】:2023-04-13 12:26:02
【问题描述】:

我不确定这是否是 Ionic React 4.8.0-rc.05.2.2

之间的预期行为

场景

  • 我有多个选项卡,其中选项卡 1 包含来自 API 调用的项目列表,而选项卡 2 包含其他内容。

  • 当我第一次运行应用程序时,Tab 1 将触发 API 调用以填充项目

  • 我想在选项卡之间导航,但选项卡 1 的项目应该保持不变

发现

我发现当我回到 Ionic React 5.2.2Tab1 时,items1 总是变成 []。但是,版本 4.8.0-rc.0 没有这种奇怪的行为,这意味着在导航离开并返回 Tab1 后,items1 内的 items1 值是相同的

  useIonViewWillEnter(async () => {
    console.log(items1);
    if (items1.length < 4) {
      setItems1([1, 2, 3]);
    }
  });

4.8.0-rc.0

https://stackblitz.com/edit/ionic-react-tabs-lj2ekk

5.2.2

https://stackblitz.com/edit/ionic-react-tabs-tvtv3c

您可以通过单击按 1 添加按钮进行测试,以查看列表增加。然后导航离开和返回。在5.2.2中,列表将再次回到[1, 2, 3]

所以我的问题是:这是一个错误吗?如果没有,现在的行为是否有所不同以及如何解决这个问题?

【问题讨论】:

    标签: typescript ionic-framework ionic4 ionic5 ionic-react


    【解决方案1】:

    这样就解决了

    useIonViewWillEnter(async () => {
        console.log(items1);
        if (items1.length < 4) {
          setItems1([1, 2, 3]);
        }
      },[items1]);
    

    【讨论】: