首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当按下链接时,如何打开浏览器?

当按下链接时,如何打开浏览器?
EN

Stack Overflow用户
提问于 2020-07-27 11:36:49
回答 1查看 1.5K关注 0票数 2

我使用的是react-native-render-html的4.2.2版本。给出以下片段:

代码语言:javascript
复制
# App.js
import React from 'react';
import HTML from 'react-native-render-html';

export default function App() {
    return (
        <HTML html='<a href="https://duckduckgo.com/">A Link To Press</a>' />
    );
}

我希望当我按下一个链接时,网页浏览器会打开,但实际上,什么都没有发生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-27 12:02:23

NB:我更新了我的答案,以包括不同版本之间的差异

重要注记

因为Linkin.canOpenUrl 已经开始要求修改android声明有个错误阻止按下链接打开安卓浏览器。这是在6.3.4版中修正的。所以一定要检查你的版本!

6.x

默认行为是使用本机Linking API来处理链接按下事件。如果您需要自定义链接按处理,您应该使用renderersProps.a.onPress支柱。

代码语言:javascript
复制
import React from 'react';
import RenderHTML from 'react-native-render-html';
import { useWindowDimensions } from 'react-native';

const renderersProps = {
  a: {
    onPress(event, url, htmlAttribs, target) {
      // Do stuff
    }
  }
}

export default function App() {
    const { width } = useWindowDimensions();
    return (
        <RenderHTML
            contentWidth={width}
            source={{ html: '<a href="https://duckduckgo.com/">A Link To Press</a>' }}
            renderersProps={renderersProps}
        />
    );
}

5.x和4.x

在v5中,按下链接在默认情况下由Linking API处理,该行为可以被onLinkPress螺旋桨覆盖。在v4上,处理链接是您的责任。为此,请使用React中的onLinkPress支柱和Linking实用程序。小心,如果您使用的是世博,您应该从Linking导入expo-linking

代码语言:javascript
复制
import React from 'react';
import HTML from 'react-native-render-html';
import { Linking } from 'react-native';
// import * as Linking from 'expo-linking';

function openLink(event, url) {
    Linking.openURL(url);
}

export default function App() {
    return (
        <HTML
            html='<a href="https://duckduckgo.com/">A Link To Press</a>'
            onLinkPress={openLink}
        />
    );
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63114501

复制
相关文章

相似问题

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