首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将setState与ssdp m-search发现结合使用?

如何将setState与ssdp m-search发现结合使用?
EN

Stack Overflow用户
提问于 2021-10-20 21:59:04
回答 1查看 73关注 0票数 1

我正在使用SSDP搜索消息来发现连接了同一网络的设备,但是当我尝试在client.on函数中调用setState钩子时,我只得到了一个设备信息。

我用这种方式初始化我的状态值

代码语言:javascript
运行
复制
const [deviceList, setDeviceList] = useState([]);

并为客户端创建一个函数,以便在找到deviceList时添加它

代码语言:javascript
运行
复制
const getAllDevices = () => {

var Client = require('react-native-ssdp-remote').Client,
  client = new Client();

client.search('urn:dial-multiscreen-org:service:dial:1');

client.on('response', function (headers) {
  const url = new URL(headers.LOCATION);
  if (url != null) {
    if (!deviceList.includes(url)) {
      setDeviceList([...deviceList, url]);
    }
  }
});
};

并在useEffect内部调用此函数

代码语言:javascript
运行
复制
  useEffect(() => {
  getAllDevices();
  }, []);

有4台设备连接到同一个网络,它进入setDeviceList进程4次,但我只能得到一台设备。你能支持一下吗。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 09:11:15

我认为这更多的是一个竞争条件,而不是一个库问题。试着在setDeviceList上使用函数更新。

代码语言:javascript
运行
复制
setDeviceList(deviceList => {
   return [...deviceList, url]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69653515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档