我正在尝试从我的反应原生应用程序链接到另一个应用程序(例如谷歌地图)。
我需要链接模块,因为它写在这里:https://facebook.github.io/react-native/docs/linking.html
我的代码包含一个简单的按钮,该按钮应打开导航应用并将某个位置作为属性传递:
<TouchableOpacity
onPress={ () =>{
Linking.openURL("http://maps.google.com/maps=daddr=Wien")
.catch(err => console.error('An error occurred', err)); }}
>
<Text>Navigate</Text>
</TouchableOpacity>
加载视图后,我没有收到任何错误,这意味着要求模块正常工作。
点击按钮后,我收到以下错误消息:
undefined is not an object (evaluating '_reactNative.Linking.openURL')
我已按照以下步骤操作:https://facebook.github.io/react-native/docs/linking-libraries-ios.html并已安装npm install link --save
&lt; - 可能问题是这是错误的模块?如果是错误的,有人知道如何调用正确的那个吗?
答案 0 :(得分:8)
您无需npm install link --save
或使用&#34; Linking Libraries in iOS&#34;指南。 &#34; <Linking />
组件&#34;和#34;链接图书馆行动&#34;是两件非常不同的事情。
<Linking />
是一个组件,允许您打开链接(网址或其他应用的链接)并检测何时从链接(从浏览器或另一个应用程序,或推送通知,例如)。它是React Native的核心组件,带有react-native npm包。
链接库“,并且需要将依赖项添加到iOS Xcode和Android Gradle构建配置中。在react-native link <package>
之后,通常使用npm install
命令完成。
您必须做的唯一事情是在使用之前在您的javascript文件中要求或导入<Linking />
。您甚至不需要文档中关于处理深层链接的整个部分。这仅适用于打开您的应用的传入链接。您只需从Opening external links
现在,为什么你的代码失败是一个谜。这是一个具有完全相同行为的工作应用程序的链接。一个简洁的例子是:
import React from 'react';
import { TouchableOpacity, Linking, Text } from 'react-native';
export default function Button() {
return (
<TouchableOpacity onPress={() => Linking.openURL('https://maps.google.com?q=stack+overflow+offices')}>
<Text>Press me</Text>
</TouchableOpacity>
);
}
您也可以在rnplay上进行测试。
我建议清理项目,删除node_modules文件夹并再次执行npm install
,并将项目编译为新项目。