如何在React Native' Share'中设置动态网址?功能

时间:2017-12-09 00:44:12

标签: javascript react-native dynamic share

我在React Native的Share组件中引用了我的一个道具,一个url(但是以普通对象形式)。我已经尝试了几种不同的方法让Share实际上能够阅读它。没有人工作过。他们应该......任何人都能看到我失踪的东西? 这是代码:

onShareButtonPress() {
   const { image } = this.props.employee;
   const test = JSON.stringify(image);
     //console.log(test);
   Share.share({
      message: 'Here\'s your image:',
      url: test,
      title: 'Dealerslist Image'
   }, {
      // Android only:
      dialogTitle: 'Share Dealerslist goodness',
      // iOS only:
      excludedActivityTypes: [
       'com.apple.UIKit.activity.PostToTwitter'
     ]
   })

这也不会起作用:

 url: 'image',   

如果我登录测试'我把url作为预期的字符串。但Share仍然无法识别它。但是如果我直接从控制台复制字符串并将其硬编码/粘贴到网址中,它就能完美运行。 此代码有效:

Share.share({
message: 'Here\'s your image:',
url: "https://firebasestorage.googleapis.com/v0/b/ag-equipment-
      southwest.appspot.com/o/1512760876838.4595.jpg?
      alt=media&token=1bfeba0d-d788-4774-91a7-7801c8084b30",
title: 'Dealerslist Image'

}

并且'测试'记录完全如下:

"https://firebasestorage.googleapis.com/v0/b/ag-equipment-
southwest.appspot.com/o/1512760876838.4595.jpg?
alt=media&token=1bfeba0d-d788-4774-91a7-7801c8084b30"

所有这些我都尝试过分享到ios邮件。动态链接不会与邮件一起使用。

但是,如果我只是分享到ios剪贴板,我会得到这个:

 Here's your image:%22https://firebasestorage....and so on

我是网络和移动开发的新手,所以我不能完全确定预期的行为是否要复制'%22'可能是一条突破线。无论如何,ios邮件共享并没有得到任何网址。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

您正在对字符串执行JSON.stringify,该字符串将在开头和结尾添加两个引号。

" = %22这可能是额外%22代码的原因

onShareButtonPress() {
   const { image } = this.props.employee;
   Share.share({
      message: 'Here\'s your image:',
      url: image,
      title: 'Dealerslist Image'
   }
   .
   .
   .
)

但理想情况下,如果您不想在请求航班期间处理意外字符,则可以尝试encodeURIdecodeURI

URL ENCODING LIST

ENCODE URI

DECODE URI

const url = "https://google.com"

console.log(url);

console.log(JSON.stringify(url));