React-навигация для повторной визуализации маршрута при изменении родительского состояния - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть страница, которая получает данные из источника с определенными интервалами и устанавливает их в состояние, я показываю часть этих данных на своей странице, и у меня есть кнопка, которая открывает другую страницу (с помощью реакции навигации), и яхочу, чтобы там отображались остальные данные, но проблема в том, что при изменении состояния родительского элемента вторая страница не обновляется, ниже приведен упрощенный код:

import React from "react";
import { View, Text, Button } from "react-native";
import { createStackNavigator, createAppContainer, NavigationActions } from "react-navigation";

class HomeScreen extends React.Component {
  constructor() {
    super();
    this.state = { number: 0 };
  }
  genNumber() {
    number = Math.random();
    this.setState({ number });
  }
  componentWillMount() {
    setInterval(() => { this.genNumber() }, 1000);
  }
  render() {
    return (
      <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
        <Text>Home Screen</Text>
        <Button title="Go" onPress={() => this.props.navigation.navigate('Test', { k: () => this.state.number })} />
      </View>
    );
  }
}

class TestScreen extends React.Component {
  constructor() {
    super()
    this.state = { t: 1 };
  }
  render() {
    return (
      <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
        <Text>Test {this.props.navigation.getParam('k')()}</Text>
      </View>
    );
  }
}

const AppNavigator = createStackNavigator({
  Home: {
    screen: HomeScreen,
  },
  Test: {
    screen: TestScreen
  }
});

export default createAppContainer(AppNavigator);

1 Ответ

0 голосов
/ 19 февраля 2019

вы используете параметры навигации для передачи данных из родительского класса в дочерний класс, и вы хотите отразить изменение состояния в дочернем классе, но оно не будет работать в нем.

Для этого используйте компонент и передавайте данныекак подпитывает вас немедленное отражение данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...