从导航堆栈中删除屏幕

时间:2019-05-28 11:38:20

标签: react-native react-navigation

应用程序结构-

  1. 主屏幕-带有按钮的导航至购物车
  2. ShoppingCart屏幕-具有按钮导航至商店屏幕
  3. 商店屏幕-具有按钮导航至购物车

    使用-react-native:0.59.5,react-navigation:^ 3.8.1

第1步-在家中转到购物车
第2步-从购物车去购物
步骤3-将一些商品添加到商店中的购物车
步骤4-从商店转到购物车-问题在这里。

第4步中的操作显示了shoppingCart的前一个屏幕(在第1步中出现了该屏幕)。购物车中没有新添加的商品,只有前一个状态。

我不知道该如何解决?有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

使用navigation-events在shoppingCart上添加onWillFocus / onDidFocus侦听器并刷新该回调中的场景

答案 1 :(得分:0)

将事件监听器放入componentDidMount中:

componentDidMount() {
        this.willFocusSubscription = this.props.navigation.addListener('willFocus', payload => {
            console.log('[print action for test:]', payload);
            if (['Navigation/INIT', 'Navigation/NAVIGATE', 'Navigation/POP_TO_TOP'].includes(payload.action.type)) {
                this.doSomething()
            }
        });
    }

答案 2 :(得分:0)

可以使用替换方法替换当前屏幕

navigation.replace(routeName, params, action)

https://reactnavigation.org/docs/en/navigation-prop.html#replace