首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在屏幕之间导航-导航5

无法在屏幕之间导航-导航5
EN

Stack Overflow用户
提问于 2020-03-08 19:49:44
回答 2查看 886关注 0票数 1

我在用不同的方式开发反应导航。麻烦在我最后一次尝试的时候。

我正试图使用自定义组件从HomeScreen导航到DetailScreen (某种程度上的按钮被驱逐)。问题是:"TypeError: Undefined不是一个对象(计算'this.prop.navigation.navigate')

有人能帮我理解这个问题吗?(注:我用的是反应导航5)

我给你不同的文件:

代码语言:javascript
复制
//fichier app.js

import 'react-native-gesture-handler'
import React from 'react';

import HomeScreen from './src/screens/HomeScreen'
import DetailScreen from './src/detailscreen'

import {NavigationContainer} from '@react-navigation/native'
import { createStackNavigator } from '@react-navigation/stack';

const Stack = createStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Detail" component={DetailScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  )
}

文件HomeScreen

代码语言:javascript
复制
import React from 'react';
import { View, Text, Button } from 'react-native';
import ButtonNav from './Button';


class HomeScreen extends React.Component  {
  render() {
    console.log('Home' + this.props)
    return (
      <View 
        style={{ alignItems: 'center', justifyContent: 'center'}}>

        <View 
          style={{height: 120, alignItems: 'center', justifyContent: 'center'}}>
          <Text>Zone 1</Text>
        </View>

        <ButtonNav/>

      </View>
    )
  }
}


export default HomeScreen;

按钮

代码语言:javascript
复制
//Button

import React from 'react';
import { View, Text, Button } from 'react-native';
import { TouchableOpacity } from 'react-native-gesture-handler';

class ButtonNav extends React.Component {

    render() {
      console.log(this.props.navigation)
      return (
        <View 
          style={{height: 120, alignItems: 'center', justifyContent: 'center' }}>
          <TouchableOpacity
            onPress={() => this.props.navigation.navigate('Detail')}>
            <Text>Button</Text>
          </TouchableOpacity>
        </View>
      );
    }
  }

  export default ButtonNav;

DetailScreen

代码语言:javascript
复制
//detail

import React  from 'react';
import { View, Text } from 'react-native';

class Detail extends React.Component {

  render() {
    console.log(this.props)
    return (
      <View 
      style={{flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text>Details Screen</Text>
      </View>
    )
  }
}

export default Detail;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-10 20:15:53

在Button类中没有导航属性,您可以这样传递它:

代码语言:javascript
复制
<ButtonNav
  navigation={this.props.navigation} />

或者您可以通过道具传递事件onPress

代码语言:javascript
复制
<ButtonNav
  onPress={() => this.props.navigation.navigate('Detail')} />

<TouchableOpacity
  onPress={this.props.onPress}>
  <Text>Button</Text>
</TouchableOpacity>
票数 0
EN

Stack Overflow用户

发布于 2020-03-08 20:20:17

因此,在ButtonNav类中,没有这个类的道具。

将这段代码包含在您的类中。

构造函数(支持){超级(道具);}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60591462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档