reactjs - 如何从 react-navigation 标头调用函数?
问题描述
我实际上正在使用反应导航https://reactnavigation.org/,我有一个带有方法的组件:
class Sing extends Component {
singASong = () => {
console.log('hello i am singing');
}
}
该组件将使用react-navigation和自定义标头呈现,问题是:如何singASong
从自定义标头调用方法?:
const routeStackNavigation = {
SingingMode: {
screen: Sing,
navigationOptions: ({ navigation }) => ({
header: (
<CustomNav onPressAction={() =>{
// how to call the method singASong from here ?
}
}
/>
),
}),
},
};
更新
我用这个设置和测试值:
this.props.navigation.setParams({'onPress': 'akumen' });
setTimeout(() => {
console.log(this.props.navigation.getParam('onPress')); // akumen
}, 2000);
我用以下方法测试值:
onPress={() =>{
console.log('NAVIGATION',navigation);
console.log('ON PRESS',navigation.getParam('onPress'));
console.log('PARAMS',navigation.state.params);
return navigation.getParam('onPress');
}
}
但未定义
堆栈导航
下面我与我的真实世界示例分享图片,它是一个堆栈导航,我之前没有注意到,但它只是设置在正确的堆栈下,所以以此作为探索的动力:
解决方案
您可以使用导航参数:
在 componentDidMount
this.props.navigation.setParams({onPressAction: ()=>this.singASong()})
在导航选项中
<CustomNav onPressAction={navigation.getParam("onPressAction") }/>
推荐阅读
- c - 函数不能返回returnSize数组中的元素的问题
- python - 错误:“无法使用无作为查询值”尝试在 Django 中使用 ListView 分页时
- sql - 如何在 sql oracle 中插入子类型值?
- swift - youtube-ios-player-helper-swift 上的 UIWebView 到 WKWebView
- javascript - 添加新数据时自动刷新另一个页面 Laravel 5.8 Ajax
- mysql - 我已在数据库中插入数据但不知道如何在 laravel 中显示
- node.js - 使用nodejs一段时间后如何动态更新数据?
- html - 定位后引导列重叠
- wordpress - wordpress 中的 wp-includes 是什么以及它的用途?
- python - 坚持连接 Beautiful Soup 和 Google Sheets