从App.js控制组件状态并更改其值

时间:2019-03-13 11:44:15

标签: reactjs react-native bluetooth-lowenergy addeventlistener dom-events

我有一个与ble设备通信的IOT应用程序。所以我用react-native-ble-manager

在此程序包中,您必须使用事件监听器,例如;

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

(有关更多信息,您可以检查this

因此,我在不同的屏幕中使用了这些事件侦听器,但这不是正确的方法。因为在具有事件侦听器的每个屏幕中都加载此addListener,这会导致问题。在componentWillUnmount事件中,您可以清除这些侦听器,但是正确的方法是在一个逻辑位置(例如App.js或类似位置)控制所有这些侦听器。

我的问题从这里开始: 我有不同的屏幕,我想从App.js设置它们的状态。我的意思是,当我从App.js事件监听器更改值时,我想使其他屏幕受此值影响。我该怎么做,或者这是使用监听器的正确方法?

我的RN版本是0.58

1 个答案:

答案 0 :(得分:0)

如果要共享侦听器,请使用提及的Context API或创建包装组件。就像App.js一样,它会创建一个新组件:

    <Wrapper>
      <YourApp/>
    <Wrapper/>

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