reactjs - 使用按钮反应原生导航
问题描述
我想使用 react-native 在页面之间导航。我总共有三页。我可以从第一页 -> 第二页 -> 第三页导航。
但是,从第三页开始,当我尝试返回第一页时,出现错误“未定义不是对象(正在评估'_this2.props.navigation.navigate)。
在第三页中,与其他两页不同,我导入了一个类以导航回第一页,但它给了我一个错误。下面是我的代码。
这是我的 App.js:
import React, {Component} from 'react'
import {View,Text,StyleSheet,ScrollView,Image,Button} from "react-native"
import FirstScreen from './FirstScreen'
import SecondScreen from './SecondScreen'
import ThirdScreen from './ThirdScreen'
import {StackNavigator} from 'react-navigation'
class App extends Component {
render(){
return(
<MyApp/>
)
}
}
const MyApp = StackNavigator({
Frist:FirstScreen,
Second:SecondScreen,
Third:ThirdScreen
})
export default App
这是我的第一个屏幕代码:
import React, {Component} from 'react'
import{ View,StyleSheet,Button} from 'react-native'
class FirstScreen extends Component{
render() {
return(
<View style={styles.container}>
<Button title="go to Second screen"
onPress={()=>this.props.navigation.navigate('Second')}>
</Button>
</View>
)
}
}
const styles = StyleSheet.create({
container:{
flex:1,
alignItems: 'center',
justifyContent: 'center'
}
})
export default FirstScreen
这是我的第二个屏幕代码:
import React, {Component} from 'react'
import{ View, StyleSheet,Button} from 'react-native'
import CardDetail from './Components/CardDetail'
class SecondScreen extends Component {
render(){
return(
<View style={styles.container}>
<Button title="go to Third screen"
onPress={()=>this.props.navigation.navigate('Third')}/>
</View>
)
}
}
const styles = StyleSheet.create({
container:{
flex:1,
paddingTop:20,
alignItems: 'center',
justifyContent: 'center'
}
})
export default SecondScreen
这是我的第三个屏幕代码:
import React, {Component} from 'react'
import{ View,Button,StyleSheet} from 'react-native'
import CardDetail from './Components/CardDetail'
class ThirdScreen extends Component{
render() {
return(
<View style={styles.container}>
<CardDetail/>
</View>
)
}
}
const styles = StyleSheet.create({
container:{
flex:1,
alignItems: 'center',
justifyContent: 'center'
}
})
export default ThirdScreen
这是我导入的类:
import React, {Component} from 'react'
import {View,
StyleSheet,
Button} from 'react-native'
class CardDetail extends Component{
render() {
return(
<View style={styles.container}>
<Button title="go back to First screen"
onPress={()=>this.props.navigation.navigate('First')}/>
</View>
)
}
}
const styles = StyleSheet.create({
container:{
flex:1,
alignItems: 'center',
justifyContent: 'center'
}
})
export default CardDetail
解决方案
<CardDetail />
没有提供navigation
道具,即
<CardDetail navigation={this.props.navigation} />
react-navigation将navigation
自动为导航器创建中指定的屏幕提供道具,但如果您希望这些屏幕上的子组件使用它,则需要通过上下文或手动将其提供给它们。
推荐阅读
- c# - Onclick 事件不会从单个单元格单击触发
- vba - 如何使用变量的值在 Excel 中创建单元格注释
- html - 图片上传到 Droppages 后不会显示
- php - 如何在 PHP $_COOKIE 值中存储数组
- javascript - 如何扫描页面的所有标签并获取或设置内容?
- php - 在 Drupal 7 中修改某些设置时出错
- javascript - 使用 webpack 创建供应商和应用程序包并使用 requirejs 加载
- java - ImageMagick 转换与 PSD 文件
- python - Scrapy-splash 呈现不同的 HTML
- webgl - WebGL:是否存在 gl.MAX_TEXTURE_IMAGE_UNITS == 1 的情况