我想从另一个这样的班级更改班级标题:
这是第二堂课,我想通过按钮更改第一堂课的标题:
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')
我该如何解决?
答案 0 :(得分:0)
首先,错误源于您在课程navigation
中没有道具lingua
的事实。这可以通过以下事实来解释:lingua
不是stackNavigator
中的场景(或任何来自反应导航的导航器)。
有2种解决方案:
1)将导航道具从堆栈中的屏幕向下传递到此组件。
2)您可以使用withNavigation
的高阶组件react-navigation
将其添加到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中调用方法来更新标题
希望有帮助!