javascript - 如何在组件功能中打开模型?
问题描述
我尝试这种方法打开一个模式,但它不起作用:
const Item = ({ title, details, }) =>{
const [detModel, setdetModal]= useState(false)
return(
<View>
<TouchableOpacity onPress={setdetModal(true)} >
<View style={styles.firstitem} >
<Text style={styles.title} >{title}</Text>
</View>
</TouchableOpacity>
// this is the modal who i want to open it if user press in the touchableOpacity
<Modal visible={detModel}>
<Ionicons name="ios-arrow-round-back" size={42} style={styles.colsemodal} color="black" onPress=
{setdetModal(false)}/>
<Text>{title}</Text>
<Text>{details}</Text>
</Modal>
</View>
)} ;
但我收到了这个错误:
太多的重新渲染。React 限制了渲染的数量以防止无限循环。
如何使用 state 方法打开此模式。
解决方案
<TouchableOpacity onPress={setdetModal(true)} >
在这里,您当前setdetModal
正在渲染 JSX 时调用该方法,从而导致重新渲染并因此导致循环。
相反,您应该传递一个箭头函数。
<TouchableOpacity onPress={() => setdetModal(true)} >
所有其他onPress
处理程序也是如此。
推荐阅读
- jboss - Keycloak LDAP 用户身份验证不起作用
- c++ - 在字符串列表中查找字符串,然后将字符串设置为找到的字符串?
- cookies - Apify:在 RequestQueue 中保留标头
- java - 通过 jList 从数据库中删除对象
- c++ - 警告 C26495 从构造函数调用函数以初始化变量,为什么?
- python - 如何遍历numpy数组并删除异常?
- android - react-native-config 将 .env 文件路径从根目录更改为其他文件夹
- reporting-services - SSRS 一份报告中的多个折线图
- sql - SQL - 如何为给定范围内的每个日期选择最新的可用记录
- php - 如何将数据从控制器传递到 laravel 中查看?