React Native:如何使用onPress函数从一组URL中打开特定的URL?

时间:2018-12-06 10:40:04

标签: arrays react-native url onpress

我有这样的网址数组:

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

我有相同的图标,但是多次。我希望每个按钮在被按下时都重定向到其特定的网址。

我尝试了这段代码,但是它不起作用:

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 :(得分:0)

快速帮助!尚未测试代码,但这是我要做的。

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
}

答案 1 :(得分:0)

因此,看来您正在执行逻辑错误。您不需要for循环,只需通过每个图标传递onPress()方法并为其传递一个参数,该参数指定您要打开的链接:

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

然后简单地:

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

如果您的问题是如何动态分配指向图标的链接...那只是另一个问题。希望这次我不会误解一切,希望可以帮助您解决疑问。