我在Webview组件下方,我希望在移动浏览器应用程序中打开链接,而不是在应用程序当前的Webview中打开链接。
return() {
<WebView source={{ html: `<a href="https://www.google.com">Google</a>`}} />
}
答案 0 :(得分:3)
您可以执行以下操作:
import { Linking } from 'react-native';
启动功能
Linking.openURL( some_url );
有关更多详细信息,请遵循以下完整示例:Just what you want
答案 1 :(得分:2)
这对我有用。
import { WebView, Linking, NavState } from 'react-native';
const html = `
<a href="https://www.google.com">Google</a>
<a href="https://www.twitter.com">Twitter</a>
`
class WebViewWrapper extends Component {
private webview;
handleNavigationStateChange = (event: NavState) => {
if (event.url) {
this.webview.stopLoading();
Linking.openURL(event.url);
}
};
render() {
return (
<WebView
originWhitelist={['*']}
ref={ref => {
this.webview = ref;
}}
source={{ html }}
onNavigationStateChange={this.handleNavigationStateChange}
/>
);
}
}
答案 2 :(得分:1)
调用stopLoading
将冻结WebView,并且一旦按下链接,链接可能会停止工作。最好使用onShouldStartLoadWithRequest
(API Reference)。
所以代码看起来像这样:
import { Linking } from 'react-native';
import { WebView } from 'react-native-webview';
const html = `
<a href="https://www.google.com">Google</a>
<a href="https://www.twitter.com">Twitter</a>
`;
const shouldStartLoadWithRequest = (req) => {
// open the link in native browser
Linking.openURL(req.url);
// returning false prevents WebView to navigate to new URL
return false;
};
const MyComponent = () => (
<WebView
originWhitelist={['*']}
source={{ html }}
onShouldStartLoadWithRequest={shouldStartLoadWithRequest}
/>
);
export default MyComponent;
请注意,onShouldStartLoadWithRequest
在iOS上的行为略有不同。
答案 3 :(得分:0)
试试这个。这将节省您的时间和耐心:)
server = require('child_process').spawn('npm', ['run', 'start:dev'], {