[英]How to exactly use react-navigation in this example
I am trying to learn react-navigation. 我正在尝试学习反应导航。 At the moment I am getting stuck with the error:
此刻,我陷入了错误:
Cannot read property 'navigate' of undefined
TestComponent.render
TestComponent.js:17:12
TestComponent.proxiedMethod
createPrototypeProxy.js:44:29
<unknown>
ReactNativeStack-dev.js:1863:24
measureLifeCyclePerf
ReactNativeStack-dev.js:1610:15
ReactCompositeComponentWrapper._renderValidatedComponentWithoutOwnerOrContext
ReactNativeStack-dev.js:1862:33
ReactCompositeComponentWrapper._renderValidatedComponent
ReactNativeStack-dev.js:1872:39
ReactCompositeComponentWrapper.performInitialMount
ReactNativeStack-dev.js:1696:62
ReactCompositeComponentWrapper.mountComponent
ReactNativeStack-dev.js:1655:164
Object.mountComponent
ReactNativeStack-dev.js:1327:38
ReactCompositeComponentWrapper.performInitialMount
ReactNativeStack-dev.js:1703:39
So here is my code 所以这是我的代码
index.android.js index.android.js
import React, {Component} from 'react';
import {AppRegistry} from 'react-native';
import DemoStore from './src/stores/DemoStore';
import { StackNavigator } from 'react-navigation';
import PoolListComponent from "./src/components/PoolListComponent";
import TestComponent from "./src/components/TestComponent";
export default class TestApp extends Component {
render() {
const nav = StackNavigator({
Home: {screen: TestComponent},
Pools: {screen: PoolListComponent}
});
return (
<TestComponent store={DemoStore} />
)
}
}
AppRegistry.registerComponent('TestApp', () => TestApp);
TestComponent TestComponent
import React, {Component} from 'react';
import {Button, StyleSheet, View} from 'react-native';
export default class TestComponent extends Component {
static navigationOptions = {
title: 'Home',
};
constructor(props) {
super(props);
}
render() {
const { navigate } = this.props.TestApp;
return (
<View>
<Button
title="Pool overview "
onPress={() =>
//navigation.navigate('Pools')
console.log(this.props.TestApp)
}
/>
</View>
);
}
}
I am not sure how to pass the StackNavigator on to my TestComponent in index.android.js
. 我不知道如何在传递StackNavigator我TestComponent在
index.android.js
。 I tried to pass it as a property like so: <TestComponent store={DemoStore} navigation={nav}/>
but this also didn't work. 我试图将其作为属性传递,如下所示:
<TestComponent store={DemoStore} navigation={nav}/>
但这也不起作用。
Running on: 运行:
Thanks. 谢谢。
I guess you are a bit confused. 我想你有点困惑。 First you need to create your navigator and then render in your main component and then you can react
this.props.navigation
in your screen components. 首先,您需要创建导航器,然后在主要组件中进行渲染,然后可以在屏幕组件中对
this.props.navigation
做出反应。
Example 例
export default class TestApp extends Component {
render() {
const Navigator = StackNavigator({
Home: {screen: TestComponent},
Pools: {screen: PoolListComponent}
});
return (
<Navigator store={DemoStore} />
)
}
}
export default class TestComponent extends Component {
static navigationOptions = {
title: 'Home',
};
constructor(props) {
super(props);
}
render() {
const { navigate } = this.props.navigation;
return (
<View>
<Button
title="Pool overview "
onPress={() =>
navigate('Pools')
}
/>
</View>
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.