Вернитесь к компоненту после того, как DeepLinking отреагирует нативно - PullRequest
0 голосов
/ 10 октября 2019

Я использую глубокие ссылки в реактивном для того, чтобы перенаправить пользователя на канал YouTube. Но когда я возвращаюсь к своему приложению, у меня появляется пустой экран, как я могу заставить пользователя вернуться на homeScreen?

Вот мой код на YouTube:

import React from 'react';
import { View, Text, Linking } from 'react-native';
import Acceuil from './Accueil';


class ChaineYT extends React.Component {

  state = {
    isLoading:false,
    isLinked: false
  }

  componentDidMount = () => {
    Linking.openURL('vnd.youtube://' + 'www.youtube.com/channel/UC1UpcbyFVTZTDrvdjNmSzSg')
    this.setState(isLoading=true, isLinked=true);

    if(this.state.isLoading && this.state.isLinking){
      return this.props.navigation.navigate("Acceuil")
    }
  }

  render() {
    return (
      <View>

      </View>
    )
  }
}

export default ChaineYT

Я не уверен насчет используемых мной состояний.

Редактировать: я обновил экран Accueil.js.

import React from 'react';
import { StyleSheet, View, TextInput, Button, Text, FlatList, ListView, Linking, StatusBar } from 'react-native';
import voyantes from '../Helpers/voyantesData';
import VoyanteItem from './VoyanteItem';
import MyButton2 from './MyButton2';

const numColumns = 2;
class Accueil extends React.Component {

  _displayDetailForVoyante = (idVoyante,photo, specialite, description, name) => {
    console.log("Display film with id " + idVoyante);
    this.props.navigation.navigate("VoyanteProfil", { idVoyante: idVoyante,photo: photo,specialite:specialite,description:description, name:name });
  }

  render() {
    return (
      <View style={styles.main_container}>
        <View style={{ flexDirection:'row', justifyContent: 'space-around', marginVertical: 8 }}>
          <MyButton2 style={{}} text={"Voyance privée\nouvert 24h/24\n01 44 01 77 01"} icone='icone-transfert' onPress={() => { Linking.openURL('tel:0144017701'); }}/>
          <MyButton2 text={"Voyance sans CB\nouvert 24h/24\n32 32"} icone='icone-sonnerie' onPress={() => { Linking.openURL('tel:3232'); }}/>
        </View>
        <FlatList style={styles.flatList}
        data={voyantes}
        keyExtractor={(item) => item.id.toString()}
        renderItem={({item}) => <VoyanteItem voyante={item} displayDetailForVoyante={this._displayDetailForVoyante} />}
        numColumns={numColumns} />
      </View>
    )
  }
}

const styles = StyleSheet.create({
  main_container: {
    flex: 1,
    backgroundColor: '#dfdee1',
    backgroundColor: 'white',
    flexDirection: 'column',
    },
  textinput: {
    marginLeft: 5,
    marginRight: 5,
    height: 50,
    borderColor: '#000000',
    borderWidth: 1,
    paddingLeft: 5,
    backgroundColor: 'white'
  },
  button: {
    backgroundColor: '#EF3934',
    borderColor: '#EF3934',
    marginLeft: 20,
    marginRight: 20
  },
  text: {
    backgroundColor: '#EF3934',
    borderColor: '#EF3934',
    marginLeft: 20,
    marginRight: 20
  },
  flatList: {
    flex: 1,
    flexDirection: 'column',
    alignContent: 'flex-start',
    //justifyContent: 'flex-start',
    //alignItems: 'flex-start'
  }
})

export default Accueil

``

1 Ответ

0 голосов
/ 10 октября 2019

Я нашел решение:

В вашем ChaineYT вы написали строку ниже:

this.setState(isLoading=true, isLinked=true);

замените его на:

this.setState({isLoading:true, isLinked:true});
...