当我尝试在导航器中使用 tabview 时,我遇到了同样的问题。然后我在返回视图时添加了 {...this.props},例如。
return <LoginScreen {...this.props}/>;
这也是我如何使用导航器的代码示例,希望对您有所帮助。
我创建了一个导航器类:
'use strict';
const React = require('React');
const Navigator = require('Navigator');
const LoginScreen = require('../login/LoginScreen');
const UserFlowScreen = require('../userFlow/UserFlowScreen');
class MyAppNavigator extends React.Component{
constructor(props) {
super(props);
}
render() {
return (
<Navigator
ref="appNavigator"
style={styles.container}
initialRoute={this.props.initialRoute}
renderScene={this._renderScene}
configureScene={(route) => ({
...route.sceneConfig || Navigator.SceneConfigs.FloatFromRight
})}
/>
);
}
_renderScene(route, navigator) {
var globalNavigatorProps = { navigator }
switch (route.ident) {
case "LoginScreen":
return <LoginScreen {...globalNavigatorProps} />
case "UserFlowScreen":
return <UserFlowScreen {...globalNavigatorProps} />
default:
return <LoginScreen {...globalNavigatorProps} />
}
}
};
module.exports = MyAppNavigator;
然后在我的主视图中我调用我的导航器:
'use strict';
const React = require('React');
const {
Text,
View,
} = React;
const MyAppViewContainer = require('./common/MyAppViewContainer');
const MyAppNavigator = require('./common/MyAppNavigator');
class MyApp extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<MyAppViewContainer >
<MyAppNavigator initialRoute={{ident: "LoginScreen"}} />
</MyAppViewContainer >
);
}
};
module.exports = MyApp;
在我的登录屏幕中,我可以推送到 userFlowScreen:
'use strict';
const React = require('React');
const ReactNative = require('react-native');
const{
Text,
View,
TouchableOpacity,
Navigator,
} = ReactNative;
class LoginScreen extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<View>
<TouchableOpacity onPress={() => this._pressRow()}>
<Text>Login</Text>
</TouchableOpacity>
</View>
);
}
_pressRow(){
this.props.navigator.push({
ident: "UserFlowScreen",
sceneConfig: Navigator.SceneConfigs.FloatFromRight,
});
}
};
module.exports = LoginScreen;