为什么 Linking.openURL 在没有 TouchableOpacity 的情况下自动触发?

Why Linking.openURL fires automaticaly without TouchableOpacity?

我对 React Native 中的功能有疑问。 我检查字符串是电子邮件、文本还是 phone 和 returns 适当的对象,例如 Linking.openURL(mailto:${phone}).

但是函数会自动触发 URL 并将我转发到 Phone 应用程序,我做错了什么?

检查字符串中值的函数

function checkResult(result){
  let emailChecker = /^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  if( !( emailChecker.test(result))){
    return Linking.openURL(`mailto:${result}`)
  }

  if(isNaN(result)){
    return Linking.openURL(`tel:${result}`)
  }
}

我的 touchableOpacity

<TouchableOpacity
        onPress={checkResult(result)}
        >
        <Text
          style={{
            color: 'blue',
            fontSize: 20,
            marginTop: 10,
            marginBottom: 40,
          }}
        >
          {result}
        </Text>
        </TouchableOpacity>

onPress={checkResult(result)} 这将导致在将函数传递给组件时调用函数 checkResult,因此该函数将在渲染时执行。

将您的 onPress 回调更新为 () => checkResult(result)

<TouchableOpacity
  onPress={() => checkResult(result)} 
>
  <Text
      style={{
      color: 'blue',
      fontSize: 20,
      marginTop: 10,
      marginBottom: 40,
    }}
    >
      {result}
    </Text>
</TouchableOpacity>

有关将函数传递给组件的更多详细信息 - here