Navigation.goBack () с вызовом API в React-Native - PullRequest
0 голосов
/ 16 ноября 2018

В моем приложении есть несколько случаев, когда навигация. GoBack () не может быть использована.Я использую реагирующую навигацию для навигации.Когда я нахожусь в подробном экране, Когда я возвращаюсь, я хочу отправить вызов API, чтобы получить последние записи на родительском экране.Поэтому я использовал навигацию.navigate () вместо навигации.goBack ();Но это делает мое приложение медленным, если я перемещаюсь и возвращаюсь назад несколько раз.Это становится очень медленным, если я делаю это еще несколько раз.В чем причина этого?Чем отличается navigation.navigate () от navigation.goBack ()?

Каков предпочтительный способ обработки такого сценария?

1 Ответ

0 голосов
/ 16 ноября 2018

есть ли способ передать param из navigate.goback () и родитель может прослушать params и обновить его состояние?

Вы можете передать функцию обратного вызова в качестве параметра (как упомянуто в других ответах).

Вот более понятный пример , когда вы переходите от A к B и хотите, чтобы B передавал информацию обратно к A, вы можете передать обратный вызов (здесь onSelect):

ViewA.js

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

class ViewA extends React.Component {
  state = { selected: false };

  onSelect = data => {
    this.setState(data);
  };

  onPress = () => {
    this.props.navigate("ViewB", { onSelect: this.onSelect });
  };

  render() {
    return (
      <View>
        <Text>{this.state.selected ? "Selected" : "Not Selected"}</Text>
        <Button title="Next" onPress={this.onPress} />
      </View>
    );
  }
}

ViewB.js

import React from "react";
import { Button } from "react-native";

class ViewB extends React.Component {
  goBack() {
    const { navigation } = this.props;
    navigation.goBack();
    navigation.state.params.onSelect({ selected: true });
  }

  render() {
    return <Button title="back" onPress={this.goBack} />;
  }
}

Снимите шляпу для мусора - см. https://github.com/react-navigation/react-navigation/issues/288#issuecomment-315684617

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