React native 从导航器外部向抽屉导航器的contentComponent发送参数
我有一个屏幕,里面嵌入了一个抽屉显示器React native 从导航器外部向抽屉导航器的contentComponent发送参数,react-native,react-navigation,React Native,React Navigation,我有一个屏幕,里面嵌入了一个抽屉显示器 import React, { Component } from "react"; import { GlobalNavigator } from "../navigators/globalNavigator"; export default class GlobalScreen extends Component { constructor(props) { super(props); this.doSomet
import React, { Component } from "react";
import { GlobalNavigator } from "../navigators/globalNavigator";
export default class GlobalScreen extends Component {
constructor(props) {
super(props);
this.doSomething= this.doSomething.bind(this);
}
doSomething() {
// do something
}
render() {
return (
<GlobalNavigator doSomething={this.doSomething} />
);
}
}
import React,{Component}来自“React”;
从“./navigators/GlobalNavigator”导入{GlobalNavigator};
导出默认类GlobalScreen扩展组件{
建造师(道具){
超级(道具);
this.doSomething=this.doSomething.bind(this);
}
doSomething(){
//做点什么
}
render(){
返回(
);
}
}
我有一个抽屉导航器,我在其中指定“contentComponent”
从“React”导入React;
从“react navigation”导入{DrawerNavigator};
从“./screens/MainScreen”导入主屏幕;
从“./components/MenuContent”导入菜单内容;
导出常量GlobalNavigator=DrawerNavigator(
{
主要内容:{
屏幕:主屏幕
}
},
{
抽屉宽度:350,
抽屉位置:“左”,
initialRouteName:“主”,
backBehavior:“初始路由”,
contentComponent:props=>
}
);
我想从屏幕向navigator发送一个参数,以便将其传递给“contentComponent”。我怎样才能做到这一点?我试过使用“screenProps”,但在“props”中没有出现这一点:
contentComponent:props=>1。存储全局屏幕实例
import React, { Component } from "react";
import { GlobalNavigator } from "../navigators/globalNavigator";
var globalScreen = undefined;
export default class GlobalScreen extends Component {
constructor(props) {
super(props);
globalScreen = this;
this.doSomething= this.doSomething.bind(this);
}
doSomething() {
// do something
}
//param to contentComponent
param = {abc:'123'};
someMethod = ()=>{
//code
};
render() {
return (
<GlobalNavigator doSomething={this.doSomething} />
);
}
}
实现,但不是很优雅
import React, { Component } from "react";
import { GlobalNavigator } from "../navigators/globalNavigator";
var globalScreen = undefined;
export default class GlobalScreen extends Component {
constructor(props) {
super(props);
globalScreen = this;
this.doSomething= this.doSomething.bind(this);
}
doSomething() {
// do something
}
//param to contentComponent
param = {abc:'123'};
someMethod = ()=>{
//code
};
render() {
return (
<GlobalNavigator doSomething={this.doSomething} />
);
}
}
export const GlobalNavigator = DrawerNavigator(
{
Main: {
screen: MainScreen
}
},
{
drawerWidth: 350,
drawerPosition: "left",
initialRouteName: "Main",
backBehavior: "initialRoute",
contentComponent: props => <MenuContent getMainScreen={() => {return globalScreen;} } {...props} />
}
);
let globalScreen = this.props.getMainScreen();
let param = globalScreen.param;//param you want to pass to menuContent
globalScreen.someMethod();//method in globalScreen