反应本地链接到另一个应用程序
我试图链接到我的反应原生应用程序(例如谷歌地图)的另一个应用程序。
我需要链接模块,因为它写在这里: https : //facebook.github.io/react-native/docs/linking.html
我的代码包含一个简单的button,应该打开导航应用程序,并传递一些位置作为属性:
<TouchableOpacity onPress={ () =>{ Linking.openURL("http://maps.google.com/maps=daddr=Wien") .catch(err => console.error('An error occurred', err)); }} > <Text>Navigate</Text> </TouchableOpacity>
加载视图时,我得到没有错误,这意味着要求模块正常工作。
在录制button时,我收到以下错误消息:
undefined is not an object (evaluating '_reactNative.Linking.openURL')
我已经按照这些步骤: https : npm install link --save
和安装npm install link --save
– 保存< – 也许问题是,这是错误的模块? ? 如果这是错误的,有人知道如何正确的称为?
您不需要npm install link --save
或使用“ iOS中的链接库 ”指南。 “ <Linking />
组件”和“链接库”是两个完全不同的东西。
<Linking />
是一个组件,允许您打开链接(url或其他应用程序的链接),并检测应用程序何时从链接(例如浏览器或其他应用程序,或推送通知)调用。 它是React Native的核心组件,并带有react-native npm软件包。
当你安装第三方库(例如react-native-maps )时, 链接库是必要的,你需要添加依赖到你的iOS Xcode和Android Gradle构buildconfiguration。 在npm install
之后,通常使用react-native link <package>
命令完成。
你必须做的唯一事情就是在使用它之前需要或者在你的javascript文件中导入<Linking />
。 您甚至不需要处理文档中的深层链接 。 这只适用于打开您的应用程序的传入链接。 所有你需要开始打开外部链接
现在,为什么你的代码失败是一个谜。 这是一个具有完全相同的行为的工作应用程序的链接。 一个简明的例子是:
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> ); }
你也可以在这里testing它。
我build议清理你的项目,删除node_modules文件夹,并再次进行npm install
,并编译新的项目。