从模拟器打开主机的浏览器?

时间:2019-08-19 07:25:43

标签: react-native

从最新的本机版本0.60开始,默认应用将在着陆页上包含以下链接列表

enter image description here

现在,如果此本机项目在模拟器上运行并且我们单击链接之一,它将在我们的笔记本电脑上打开,而不是在模拟器内从浏览器打开。我想知道它是如何工作的,所以我看了一下node_modules/react-native/Libraries/Core/Devtools/openURLInBrowser.js并在下面的代码中找到了

'use strict';

const getDevServer = require('./getDevServer');

function openURLInBrowser(url: string) {
  // Made a console.log here and getDevServer().url = http://localhost:8081
  fetch(getDevServer().url + 'open-url', {
    method: 'POST',
    body: JSON.stringify({url}),
  });
}

module.exports = openURLInBrowser;

尽管拥有此源代码,但我仍然不明白如何使用fetch库在主机的浏览器中启动url?到目前为止,我只使用fetch来执行来自某个后端的http请求,但是显然fetch还提供了更多功能吗?

1 个答案:

答案 0 :(得分:0)

Metro捆绑程序正在8081上运行。 fetch正在对http://localhost:8081/open-url执行HTTP POST请求。 Metro能够处理此请求并相应地打开浏览器。

Express Web服务器示例可以像这样处理它:

app.post('/open-url', req => {
  const { url } = req.body;
  // Handle code to open URL
});