Ошибка типа: Не удается прочитать свойства неопределенного (чтение «реквизита») для нажатия на кнопку в приложении React

#javascript #node.js #reactjs

#язык JavaScript #node.js #реагирует на

Вопрос:

Я пытаюсь создать две кнопки, которые переходят на две другие страницы в моем приложении react. Я нажимаю на любую кнопку и получаю следующую ошибку, когда нажимаю на кнопку с пометкой «Домой».

 TypeError: Cannot read properties of undefined (reading 'props') onPress   9 | lt;Button  10 | title="Go to Home"  11 | onPress={ gt; 12 | () =gt; this.props.navigation.navigate('Home')  13 | ^ }  14 | /gt;amp;nbsp;  15 |   

Я получаю следующую ошибку, когда нажимаю на кнопку с пометкой профиль.

 TypeError: Cannot read properties of undefined (reading 'props') onPress  16 | lt;Button  17 | title="Go to Profile"  18 | onPress={ gt; 19 | () =gt; this.props.navigation.navigate('Profile')  20 |   21 | ^ }  22 | /gt;  

Я получаю ту же ошибку, когда нажимаю на любую кнопку. Ниже приведен код для трех файлов, с которыми я работаю.

Apps.js

 import React from 'react'; import { StyleSheet, Text, View, Button } from 'react-native'; import Home from './Screens/Home'  export default function App() {  return (  lt;View style={styles.container}gt;  lt;Textgt;Open up App.js to start working on your app!lt;/Textgt;amp;nbsp;  lt;Button  title="Go to Home"  onPress={  () =gt; this.props.navigation.navigate('Home')  }  /gt;amp;nbsp;   lt;Button  title="Go to Profile"  onPress={  () =gt; this.props.navigation.navigate('Profile')  }  /gt;  lt;/Viewgt;  ); } const styles = StyleSheet.create({  container: {  flex: 1,  backgroundColor: '#fff',  alignItems: 'center',  justifyContent: 'center',  }, });  

Home.js

 import React from 'react'; import { StyleSheet, Text, View, Button } from 'react-native';  //import { createStackNavigator } from 'react-navigator';  export default class Home extends React.Component {  render() {  const userName = this.props.navigation.getParam('')   return (  lt;View style={styles.container}gt;  lt;Textgt;Hello from Profile Pagelt;/Textgt;  lt;/Viewgt;  );  } } const styles = StyleSheet.create({  container: {  flex: 1,  backgroundColor: '#fff',  alignItems: 'center',  justifyContent: 'center',  }, });  

Profile.js

 import React from 'react'; import { StyleSheet, Text, View, Button } from 'react-native';  import { createStackNavigator } from 'react-navigator';  export default class Profile extends React.Component {  render() {  return (  lt;View style={styles.container}gt;  lt;Textgt;Hello from Profile Pagelt;/Textgt;  lt;/Viewgt;  );  } } const styles = StyleSheet.create({  container: {  flex: 1,  backgroundColor: '#fff',  alignItems: 'center',  justifyContent: 'center',  }, });  

Комментарии:

1. Поскольку вы используете функциональный компонент для приложения, это ключевое слово там неприменимо.

Ответ №1:

Ваш Apps.js является функциональным компонентом, и ключевое this слово не будет работать , плюс ничего не передается через export default function App() , что вы, возможно, захотите сделать this.props.navigation.navigate('Home') , это заменить props.navigation.navigate('Home') и получить параметр props, выполнив export default function App(props)