首页 > 解决方案 > 静态 passProps 在 Navigation.push 上没有改变

问题描述

我正在使用来自 Wix 的 react-native-navigation v2,试图将屏幕推送到现有堆栈。这是我的推送代码:

        Navigation.push(this.props.componentId, {
          component: {
            name: 'chapel.search'
          }
        })

我的选项对象

  static options (passProps) {
    console.log('Firing static method')
    return {
      component: {
        name: 'chapel.search',
        topBar: {
          visible: true,
          leftButtons: [
            {
              id: 'back',
              testID: 'back',
              icon: require('../../Images/back.png')
            }
          ],
          title: {
            component: {
              name: 'chapel.navtitle',
              alignment: 'center',
              passProps: { text: 'Search' }
            }
          },
          rightButtons: []
        }
      }
    }
  }

我从来没有看到日志语句,并且顶部栏选项没有改变。他们应该吗?

当我在目标屏幕Navigation.mergeOptions中使用上述选项对象时constructor,会出现选项,所以这就是我现在使用的。

使用android,还没有在iOS上测试过。当我这样做时会更新。

标签: react-native-navigationwix-react-native-navigationreact-native-navigation-v2

解决方案


我在我的组件中创建了这样的静态选项:

 static get options() {
    return {
        ...
    }
 }

当我从另一个屏幕推送并想要覆盖一些默认值时,我会这样做:

Navigation.push(this.props.componentId, {
    component: {
      name: 'chapel.search',
      passProps: {
        myProp: myprop1
      },
      options: {
        topBar: {
          title: {
            text: newTitleOverridingStaticOne
          }
        }
      }
    }
});

我不知道是否static options (passProps){...}有效,但您可以尝试像我上面显示的那样检查它是否已解决


推荐阅读