0

我有一个这样的网址数组:

 [ "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>
4

2 回答 2

0

所以看起来你在做一个逻辑错误。您不需要 for 循环,只需通过每个图标调用 onPress() 方法传递一个参数,该参数指定您要打开的链接:

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

然后简单地说:

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

如果您的问题是如何动态地将链接分配给图标……那只是另一个问题。我希望这次我没有误解一切,这可以帮助您解决疑虑。

于 2018-12-06T11:38:19.123 回答
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
}
于 2018-12-06T11:36:29.230 回答