React-native ComponentDidMount не запускается - PullRequest
1 голос
/ 14 октября 2019

Я пытался обновлять звуковой массив, который я импортировал из другого компонента, каждый раз, когда он менялся. Но, однако, он только запускает componentDidMount () только один раз и больше не запускается. Ниже приведен мой код проблемы:

//sound array from another component
import { soundArray } from "./CreateRecord";

export default class RecordingList extends React.Component {
constructor() {
super();
this.currentSoundArray = [];
  }

componentDidMount() {
    console.log(this.currentSoundArray);
    this.getCurrentArray();
  }

getCurrentArray() {
    this.currentSoundArray = soundArray;
  }

render(){
...
}

В настоящее время, когда я просматриваю компонент, componentDidMound запускается один раз и утешает звуковой массив. Сначала звуковой массив пуст:

[]

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

Мой ожидаемый результат должен состоять в том, что currentSoundArray будет изменен и будет выводиться на консоль каждый раз, когда soundArray изменяется в другом компоненте. например:

[]

[1,2]

[1,2,4]

Ответы [ 2 ]

1 голос
/ 14 октября 2019

componentDidMount () вызывается сразу после монтирования компонента (вставки в дерево). Инициализация, которая требует DOM-узлов, должна быть здесь. Если вам нужно загрузить данные из удаленной конечной точки, это хорошее место для создания экземпляра сетевого запроса.

Он выполняется только один раз.

0 голосов
/ 15 октября 2019

То, что вы пытаетесь сделать, - это получить значение currentSoundArray, когда оно обновляется из другого компонента, теперь, когда вы не сможете делать это традиционно.

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

Решение 1

Лучший способ сделать это - использовать что-то вроде React Redux для управления состоянием приложения, таким образом вы сможетечтобы получить доступ к состояниям из любого компонента в вашем приложении.

Я только что закончил настройку шаблона плиты котла для этой конкретной вещи, если вы хотите проверить его на Github :)

Решение 2

Если вы не заинтересованы в Redux, я бы посоветовал вам использовать реагирующий контекст для этого, он также решит вашу проблему. Вы можете ознакомиться со многими примерами в Интернете, например, this использует контекст для совместного использования снэк-бара между компонентами.

Надеюсь, это поможет!

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