如何解决setState 在 DeviceEventEmitter (datawedge_broadcast_intent) 上不会改变在 React Native 中设置状态的最佳方法是什么?
我使用 Android Zebra 扫描仪执行扫描,我使用 deviceeventemitter ('datawedge_broadcast_intent') 第一屏我用的是deviceeventemitter,一切正常,换屏时deviceeventemitter抓不到最新状态,
如果我触发 deviceeventemitter 或 onPress 那么 dataReceived() 函数将运行, 但是在 deviceeventemitter 中,dataReceived() 函数不会从 count 中捕获最新的数据。 这是我的代码如下:
import React,{ useEffect,useState } from 'react';
import {
Button,deviceeventemitter,StyleSheet,Text,View
} from 'react-native';
// import datawedgeIntents from 'react-native-datawedge-intents';
const Unkitting = () => {
const [count,setCount] = useState(0);
const dataReceived = intent => {
console.log(intent)
setCount(count + 1)
};
useEffect(() => {
const scan = deviceeventemitter.addListener(
'datawedge_broadcast_intent',intent => { dataReceived(intent); },);
return () => scan.remove();
},[]);
return (
<View >
<Text>{count}</Text>
<Button
title="add count"
onPress={() => dataReceived("Button Press")}>
</Button>
</View>
);
};
export default Unkitting;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。