setParams无法在react-native中工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setParams无法在react-native中工作相关的知识,希望对你有一定的参考价值。

我正在使用react-native和redux。我正在尝试更新当前屏幕的参数,以便可以在顶栏中使用的组件中访问它们,但参数未设置。我的代码如下:

屏幕路线:

AlertNameForm: {
    screen: AlertNameForm,
    navigationOptions: ({navigation}) => CancelAndDone(navigation)
  }

组件屏幕:在componentDidMount中我正在设置参数。

class AlertNameForm {
    ..........
    componentDidMount() {
    this.props.navigation.setParams({onDonePress: this.onDonePress})
    }

    onDonePress: () => {
      // want to access this function in top-bar buttons.
    }
}

以下是其他组成部分:

export const CancelAndDone = (navigation) => ({
    headerLeft: <ButtonCancel navigation={navigation} />,
    headerRight: <ButtonDone navigation={navigation} />
})

const ButtonDone = withTheme(({navigation, theme: { tertiaryColor } }) => (
  <Button color={tertiaryColor} title="Done" onPress={() => {
      if (navigation.state.params && navigation.state.params.onDonePress) {
        navigation.state.params.onDonePress()
      }
      else {
        navigation.dispatch(NavigationActions.back())
      }
    }} />
))

但是在ButtonDone组件中,我无法访问onDonePress函数。在react-native中,还有其他任何方法可以将setParams用于当前屏幕。

答案

你应该参考navigation.state.paramsusing this.props,因为导航应该作为prop传递给那个组件。

以上是关于setParams无法在react-native中工作的主要内容,如果未能解决你的问题,请参考以下文章

无法在我的项目中解析“react-native”

我无法在带有 redux 的 react-native 中使用地理定位

以真实设备为目标时,无法在 IOS 中构建 react-native

如何在 react-native 中访问相机我无法将图片保存在手机存储中

无法在 React-native 中更改自定义组件的宽度和高度?

zIndex 在 IOS 的 react-native 中无法正常工作