通过 CreateAppContainer 传递道具
Pass props through CreateAppContainer
我正在尝试通过 AppContainer 传递道具。我能够通过其他组件传入,但我不知道如何通过 createAppContainer
发送道具
在App.js中:
render() {
return (
this.state.isLoggedIn ? <DrawerNavigator /> :
<SignedOutNavigator handler={this.saveUserSettings} />
)
}
在 SignedOutNavigator 中:
import React from "react";
import { View, Text } from "react-native";
import { createStackNavigator, createAppContainer } from "react-navigation";
import LoginScreen from "../screens/LoginScreen";
const SignedOutNavigator = createStackNavigator({
Login: {
// screen: LoginScreen
screen: props => <LoginScreen screenProps={value => {
// I need to access props from here
// like this.props.handler(value)
}} />,
navigationOptions: ({ navigation }) => ({
header: null,
}),
}
});
export default createAppContainer(SignedOutNavigator);
您必须将道具的范围限定在 screenProps
下才能在 screen
级别访问它。
// App.js
<AppNavigator
screenProps={{
handler: () => {},
hello: "World"
}}
/>
// Navigator.js
const StackNavigator = createStackNavigator({
Login: {
screen: ({ screenProps, navigation }) => {
screenProps.handler();
// ...
},
},
})
好的,我在 Samuel Vaillant 的帮助下完成了这项工作。我不得不做一些修改。
我的App.js:
render() {
return (
this.state.isLoggedIn ? <DrawerNavigator /> : <SignedOutNavigator
screenProps={{
handler: (settings) => { this.saveUserSettings(settings) }
}}
/>
)
}
我的 SignedOutNavigator:
import React from "react";
import { View, Text } from "react-native";
import { createStackNavigator, createAppContainer } from "react-navigation";
import LoginScreen from "../screens/LoginScreen";
const SignedOutNavigator = createStackNavigator({
Login: {
// screen: LoginScreen
screen: screenProps => <LoginScreen screenProps={value => {
screenProps.screenProps.handler(value)
}} />,
navigationOptions: ({ navigation }) => ({
header: null,
}),
}
});
export default createAppContainer(SignedOutNavigator);
我正在尝试通过 AppContainer 传递道具。我能够通过其他组件传入,但我不知道如何通过 createAppContainer
发送道具在App.js中:
render() {
return (
this.state.isLoggedIn ? <DrawerNavigator /> :
<SignedOutNavigator handler={this.saveUserSettings} />
)
}
在 SignedOutNavigator 中:
import React from "react";
import { View, Text } from "react-native";
import { createStackNavigator, createAppContainer } from "react-navigation";
import LoginScreen from "../screens/LoginScreen";
const SignedOutNavigator = createStackNavigator({
Login: {
// screen: LoginScreen
screen: props => <LoginScreen screenProps={value => {
// I need to access props from here
// like this.props.handler(value)
}} />,
navigationOptions: ({ navigation }) => ({
header: null,
}),
}
});
export default createAppContainer(SignedOutNavigator);
您必须将道具的范围限定在 screenProps
下才能在 screen
级别访问它。
// App.js
<AppNavigator
screenProps={{
handler: () => {},
hello: "World"
}}
/>
// Navigator.js
const StackNavigator = createStackNavigator({
Login: {
screen: ({ screenProps, navigation }) => {
screenProps.handler();
// ...
},
},
})
好的,我在 Samuel Vaillant 的帮助下完成了这项工作。我不得不做一些修改。
我的App.js:
render() {
return (
this.state.isLoggedIn ? <DrawerNavigator /> : <SignedOutNavigator
screenProps={{
handler: (settings) => { this.saveUserSettings(settings) }
}}
/>
)
}
我的 SignedOutNavigator:
import React from "react";
import { View, Text } from "react-native";
import { createStackNavigator, createAppContainer } from "react-navigation";
import LoginScreen from "../screens/LoginScreen";
const SignedOutNavigator = createStackNavigator({
Login: {
// screen: LoginScreen
screen: screenProps => <LoginScreen screenProps={value => {
screenProps.screenProps.handler(value)
}} />,
navigationOptions: ({ navigation }) => ({
header: null,
}),
}
});
export default createAppContainer(SignedOutNavigator);