【问题标题】:Update InitialRouteStack in React Native Navigator在 React Native Navigator 中更新 InitialRouteStack
【发布时间】:2016-01-27 07:56:21
【问题描述】:

我有一个导航器,它必须处理 4 个不同的视图,它们应该在同一级别。我将它们加载到 InitialRouteStack 中,每当我需要其中一个时,我都会调用 jumpTo(route) 并得到我想要的。

但是,当我更改其中一个视图中的值时,我确实有一个回调来更新放置导航器的给定值的状态。我认为这会重新渲染整个事物并更新 RouteStack 中的道具。

这不会发生。我也尝试在 Navigator 上运行 forceUpdate(),但每个组件中的 props 都没有更新。当第一次渲染 Navigator 时,我一直拥有我传递的值。

有没有办法解决这个问题?我真的不想使用 replace(route) 因为每次重新渲染每个组件会很愚蠢。

编辑 我查看了立即ResetRouteStack 和replacedAtIndex,但它们似乎不可行。第一个重置整个事情,第二个在索引处替换,而理论上,我应该更新传递给堆栈中每个组件的道具。

【问题讨论】:

    标签: javascript reactjs react-native navigator


    【解决方案1】:

    我有一个类似的question。在那里您可以找到可能的解决方案。

    最终我使用redux 来处理所有数据流,这为我解决了这个问题。在那里,我将每一个 smart component 连接到商店,至少曾经包含在 NavigatorIOS-Route 中。这样我就完全绕过了 NavigatorIOS,连同passProps。

    已知问题

    还有一个 issue 用于 react-native,用于在 passProps 更改时重新渲染 NavigatorIOS 中的组件。

    【讨论】:

    • 问题是,我在使用 NavigatorIOS 时遇到了同样的问题,我已经用 componentWIllReceiveProps 和事件触发了更新解决了这个问题。但是现在,我正在尝试为 Android 编写相同的逻辑,这非常具有挑战性。
    • componentWillReceiveProps 在调用 jumpTo 时不会被触发,这是主要问题。 : |
    • 像redux 这样的实现不是一个选项吗?我还没有使用 react-native for android,抱歉:/
    • 我想让 Android/iOS 保持类似的逻辑,所以在 Android 而不是在 iOS 上使用 redux 不是我想要的。
    • 我的意思是对整个应用程序使用redux。纯JS,应该不会有什么问题。
    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多