【问题标题】:How to change navigationOptions from another class React Native如何从另一个类 React Native 更改 navigationOptions
【发布时间】:2018-06-28 20:45:58
【问题描述】:

我想从另一个类中更改我的类的标题标题,如下所示:

这是第二堂课,我想用一个按钮更改第一堂课的标题:

export default class lingua extends React.Component { 
cambiolingua= () =>
{   
const registra = new Registra(); //in this class I want to change title
registra.ChangeTitle('New Title');

this.props.navigation.navigate('Registra')
}

这是我需要更改标题的第一堂课:

export default class Registra extends React.Component {
static navigationOptions = ({ navigation }) => {
const {state} = navigation;
return {
  title: `${state.params.title}`,
};
};

 ChangeTitle = (titleText) => {
  const {setParams} = this.props.navigation;
  setParams({ title: titleText })
 }

但我收到错误“未定义不是对象(正在评估'_this.props.navigation')

我该如何解决?

【问题讨论】:

  • 我可以得到snack.expo.io的链接吗?

标签: android reactjs react-native react-navigation


【解决方案1】:

首先,错误来自您的班级lingua 中没有道具navigation。这可以通过lingua 不是stackNavigator 中的场景(或来自反应导航的任何类型的导航器)来解释。

有两种解决方案: 1) 将导航道具从堆栈中的屏幕向下传递到此组件。 2)您可以使用react-navigation的高阶组件withNavigation将其添加到lingua

例子:

import {withNavigation} from 'react-navigation'

class tmp extends React.Component {

  render() {
    const {navigation} = this.props; //with the withNavigation, you have access to the navigation even though it is not a screen

    return <View />
  }
}

export default withNavigation(tmp);

更改标题比更新 navigationOptions 更好的方法是导航到 Registra,直接发送你想要的标题:

// In lingua
this.props.navigation.navigate('Registra', {title: 'You custom title'})

通过这样做,您不必调用 Registra 中的方法来更新标题

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多