我使用的是react-native-render-html的4.2.2版本。给出以下片段:
# 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>' />
);
}我希望当我按下一个链接时,网页浏览器会打开,但实际上,什么都没有发生。
发布于 2020-07-27 12:02:23
NB:我更新了我的答案,以包括不同版本之间的差异
重要注记
因为Linkin.canOpenUrl 已经开始要求修改android声明,有个错误阻止按下链接打开安卓浏览器。这是在6.3.4版中修正的。所以一定要检查你的版本!
6.x
默认行为是使用本机Linking API来处理链接按下事件。如果您需要自定义链接按处理,您应该使用renderersProps.a.onPress支柱。
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。
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}
/>
);
}https://stackoverflow.com/questions/63114501
复制相似问题