为什么 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
我对 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