Контролировать состояния компонентов из App.js и изменять их значения - PullRequest
1 голос
/ 13 марта 2019

У меня есть приложение IOT, которое связывается с любыми устройствами. Поэтому я использую react-native-ble-manager.

В этом пакете вы должны использовать прослушиватели событий, такие как;

bleManagerEmitter.addListener( 'BleManagerDidUpdateValueForCharacteristic', this.handlerCharListenerSettings);

(Для получения дополнительной информации вы можете проверить это )

Так что я использую эти слушатели событий на разных экранах, но это не совсем правильно. Потому что на каждом экране, который имеет прослушиватель событий, загружается этот addListener, и это вызывает проблемы. В событии componentWillUnmount вы можете очистить этих слушателей, но правильный способ - управлять всеми этими слушателями в одном логическом месте, например, в App.js или в любом другом подобном месте.

Моя проблема начинается здесь: У меня разные экраны, я хочу установить их состояния из App.js. Я имею в виду, что когда я меняю значение из прослушивателя событий App.js, я хочу, чтобы это значение влияло на другие экраны. Как я могу это сделать или это правильный способ использования слушателей?

Моя версия RN - 0,58

1 Ответ

0 голосов
/ 13 марта 2019

Если вы хотите поделиться слушателем, либо используйте Context API, как упомянуто, либо создайте компонент обтекания.Как и в App.js, создать новый компонент:

    <Wrapper>
      <YourApp/>
    <Wrapper/>

class Wrapper extends React.Component {
  componentWillMount() {
     bleManagerEmitter.addListener( 'BleManagerDidUpdateValueForCharacteristic', this.handlerCharListenerSettings);
   }
}
...