Пропустите в компонент напрямую или не хотите передавать его в случае глубоко вложенного потомка.

ался использовать StackNavigator для навигации, и он работает, когда я использую его для перехода с одного экрана на другой, как объясненоВот, Но когда я пытаюсь найти подкомпонент для навигации по себе, навигация, кажется, не работает, и я не могу найти никакого решения.

Как показано в приведенном ниже коде, я пытаюсь использовать тестовый компонент, в котором есть кнопка, которую можно нажать для перехода с HomeScreen на ChatScreen.

Я уверен, что решение является чем-то базовым, но я действительно нигде не могу его найти.

Вот мой код:

import React from 'react';
import {
  AppRegistry,
  Text,
  View,
  Button
} from 'react-native';
import { StackNavigator } from 'react-navigation';

class HomeScreen extends React.Component {
  static navigationOptions = {
    title: 'Welcome',
  };
  render() {
    const { navigate } = this.props.navigation;
    let userName = 'Ketan';
    return (
      <View>
        <Text>Hello, Chat App!</Text>
        <Button
          onPress={() => navigate('Chat', { user: userName })}
          title={"Chat with " + userName}
        />
        <Test />
      </View>
    );
  }
}

class ChatScreen extends React.Component {
  static navigationOptions = ({ navigation }) => ({
    title: `Chat with ${navigation.state.params.user}`,
  });
  render() {
    const { params } = this.props.navigation.state;
    return (
      <View>
        <Text>Chat with {params.user}</Text>
      </View>
    );
  }
}

class Test extends React.Component {
  render() {
    const { navigate } = this.props.navigation;
    return (
      <View>
        <Button
          onPress={() => navigate('Chat', { user: 'TestBot' })}
          title={'This is a test'}
        />
      </View>
    )
  }
}

const NavApp = StackNavigator({
  Home: { screen: HomeScreen },
  Chat: { screen: ChatScreen },
});

AppRegistry.registerComponent('NavApp', () => NavApp);

Вот ошибка, которую я получаю:

Вот демо для тестирования:https://snack.expo.io/HyaT8qYob

Я надеюсь, что мой вопрос достаточно ясен о том, что я имею в виду.

Ответы на вопрос(0)

Ваш ответ на вопрос