reactjs - setParams 在 react native 中不起作用

标签 reactjs react-native react-router react-redux react-navigation

我正在使用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中为当前屏幕设置参数。

最佳答案

您应该使用 this.props 引用 navigation.state.params,因为导航应作为 prop 传递给该组件。

关于reactjs - setParams 在 react native 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348190/

相关文章:

javascript - 为数据分配颜色

javascript - 使用 React Router v4 在身份验证后导航到页面

javascript - 在不刷新页面的情况下更改 URl NEXT.JS

javascript - 使用 ES6 构造函数呈现 React 组件的刷新页面会破坏应用程序

javascript - Redux 表单卸载组件 onSubmit

javascript - 如何删除 react 导航顶部栏中选项卡之间的空白

React-Native:布局动画

javascript - react 路由器导航链接不会在路线更改时更新

javascript - React Router Link 不适用于 LeafletJS

reactjs - Jest 与酵素 |接收值必须是一个函数,接收未定义