React Native: Как открыть определенный URL с помощью функции onPress из массива URL? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть такой массив URL-адресов:

 [ "https://hey.com",
   "https://yes.com",
   "https://wow.com",
      /..
 ]

У меня один и тот же значок, но несколько раз.Я хочу, чтобы каждый из них перенаправлял на свой конкретный URL при нажатии.

Я пробовал этот код, но он не работает:

onPress=(arrayOfURL)=>{  
for (i in arrayOfURL)
{      
  this.setState({ browserOpen: true });
  WebBrowser.openBrowserAsync(JSON.stringify(arrayOfURL[i]))
  .then(() => {
        WebBrowser.dismissBrowser();
        this.setState({ browserOpen: false });
    });         
}

}

Код дляЗначок:

          <View >         
            <Icon
              name='sc-telegram'
              type='evilicon'
              color='black'          
              onPress={this.onPress} />
          </View>

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Так что, похоже, вы делаете логическую ошибку.Вам не нужен цикл for, просто вызывайте метод onPress () для каждого значка, передавая ему параметр, указывающий ссылку, которую вы хотите открыть:

<Icon
     name='sc-telegram'
     type='evilicon'
     color='black'          
     onPress={() => this.onPress(arrayOfURL[0])} />

А затем просто:

onPress = (url) => {
  [...]
  WebBrowser.openBrowserAsync(url).then(...)
  [...]
}

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

0 голосов
/ 06 декабря 2018

Быстрая помощь!Не проверял код, но это то, что я делаю.

const urls = ["https://hey.com", "https://yes.com", "https://wow.com"];

urls.map(value => {
 return <View>         
            <Icon
              name='sc-telegram'
              type='evilicon'
              color='black'          
              onPress={() => this.openSpecificUrl(value)} />
          </View>

})

onSpecificUrl = (specificUrl) => {
  //you will get specific url from an array. You can perform your opening logic here
}
...