我有一个与ble设备通信的IOT应用程序。所以我用react-native-ble-manager
。
在此程序包中,您必须使用事件监听器,例如;
bleManagerEmitter.addListener( 'BleManagerDidUpdateValueForCharacteristic', this.handlerCharListenerSettings);
(有关更多信息,您可以检查this)
因此,我在不同的屏幕中使用了这些事件侦听器,但这不是正确的方法。因为在具有事件侦听器的每个屏幕中都加载此addListener
,这会导致问题。在componentWillUnmount
事件中,您可以清除这些侦听器,但是正确的方法是在一个逻辑位置(例如App.js或类似位置)控制所有这些侦听器。
我的问题从这里开始: 我有不同的屏幕,我想从App.js设置它们的状态。我的意思是,当我从App.js事件监听器更改值时,我想使其他屏幕受此值影响。我该怎么做,或者这是使用监听器的正确方法?
我的RN版本是0.58
答案 0 :(得分:0)
如果要共享侦听器,请使用提及的Context API或创建包装组件。就像App.js一样,它会创建一个新组件:
<Wrapper>
<YourApp/>
<Wrapper/>
class Wrapper extends React.Component {
componentWillMount() {
bleManagerEmitter.addListener( 'BleManagerDidUpdateValueForCharacteristic', this.handlerCharListenerSettings);
}
}