我有一个与BLE设备通信的IoT应用程序。所以我使用 react-native-ble-manager
。
在此软件包中,您必须使用事件听众,例如;
bleManagerEmitter.addListener( 'BleManagerDidUpdateValueForCharacteristic', this.handlerCharListenerSettings);
(有关更多信息,您可以检查此信息)
所以我在不同的屏幕上使用这些事件听众,但这不是一种正确的方法。因为在每个具有事件的屏幕中,侦听器都会加载此addListener
,这会导致问题。在componentWillUnmount
事件中,您可以清除这些听众,但是正确的方法是在一个逻辑位置(例如app.js或任何相似的地方)控制所有这些听众。
我的问题从这里开始:我有不同的屏幕,我想从app.js设置其状态。我的意思是,当我从app.js事件侦听器中更改值时,我想使其他屏幕受此值影响。我如何做到这一点,或者这是使用听众的正确方法?
我的RN版本是0.58
如果要共享侦听器,则使用上述上下文API或创建包装组件。很像app.js创建一个新组件:
<Wrapper>
<YourApp/>
<Wrapper/>
class Wrapper extends React.Component {
componentWillMount() {
bleManagerEmitter.addListener( 'BleManagerDidUpdateValueForCharacteristic', this.handlerCharListenerSettings);
}
}