2017-12-09 8 views
0

Ich verweise auf eine meiner Requisiten, eine URL (aber in einfacher Form), in der Share-Komponente von React Native. Ich habe mehrere verschiedene Möglichkeiten ausprobiert, um es tatsächlich lesen zu können. Keine hat funktioniert. Und sie sollten ... irgendjemand sehen, was ich vermisse?
Hier ist der Code:Wie man dynamische URL in React Native 'Share' -Funktion setzt

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' 
    ] 
    }) 

Dies wird entweder nicht:

url: 'image', 

Wenn ich 'test' log erhalte ich die URL als die erwartete Zeichenfolge. Aber Share kann es immer noch nicht erkennen. Aber wenn ich die Zeichenfolge direkt von der Konsole kopiere und sie als URL einfüge/einfüge, funktioniert sie perfekt. Dieser Code funktioniert:

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' 

}

Und 'test' protokolliert genau wie:

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

Alle diese habe ich mit Sharing versucht Mail an ios. Und die dynamische Verbindung funktioniert nicht mit der Mail.

Allerdings, wenn ich nur an der ios Zwischenablage teilen, bekomme ich diese:

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

Ich bin neu in Web- und Mobile-Entwicklung, so dass ich bin mir nicht ganz sicher, ob das erwartete Verhalten zu kopieren ist '% 22' als möglicherweise eine Unterbrechung der Linie. Unabhängig davon erhält die E-Mail-Freigabe keine URL.

Jede Hilfe wäre willkommen! Vielen Dank!

+0

Gibt es Gründe, warum die 'JSON.stringify'? Versuchen Sie, das zu entfernen. –

Antwort

1

Sie tun eine JSON.stringify auf eine Zeichenfolge, die zwei Anführungszeichen am Anfang und am Ende hinzufügen wird.

" = %22 das ist wahrscheinlich der Grund für die zusätzlichen %22 Codes

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

Aber im Idealfall würden Sie encodeURI und decodeURI versuchen wollen, wenn Sie nicht mit unerwarteten Zeichen während der Anforderung Flug beschäftigen möchten.

URL ENCODING LIST

ENCODE URI

DECODE URI

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

 
console.log(url); 
 

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

+0

Danke Nandu! Das hat funktioniert. Ich habe das früher versucht, aber etwas anderes muss falsch gewesen sein, weil das Bild dann nicht funktioniert hat. Tausend Dank! –