Как отправить данные из следующего экрана на предыдущий экран и добавить данные в массив в предыдущую переменную состояния экрана в реагировать родной - PullRequest
0 голосов
/ 27 апреля 2020

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

первый экран:

componentDidUpdate() {
    if (this.props.navigation.getParam('sizeData') != undefined) {
      if (this.props.navigation.getParam('sizeData') != this.state.sizeData) {
            let sizeDataArray = this.props.navigation.getParam('sizeData');
              this.setState({
                sizeData: [...this.state.sizeData, sizeDataArray],
              )}
      }
    }
 }

второй экран:

this.props.navigation.navigate('AddArticle', {
      sizeData: this.state.sizeData,
    });

В этой ситуации когда я пытаюсь добавить данные, то componentDidUpdate создает бесконечное число l oop. Кто-нибудь может предоставить какой-нибудь другой метод?

Заранее спасибо:)

1 Ответ

0 голосов
/ 28 апреля 2020

Вы получаете бесконечное l oop, потому что вы не правильно определяете смену экрана, а затем обновления запускаются снова и снова при реализации componentDidUpdate .

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

    componentDidUpdate(prevProps) {
        if (prevProps.isFocused !== this.props.isFocused) {
            let sizeDataParam = this.props.navigation.getParam('sizeData');
            if (sizeDataParam != undefined) {
                this.setState({
                    sizeData: [...this.state.sizeData, sizeDataParam],
                )}
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...