React Navigation报错:Please attach a method to this component 求助
你遇到的问题核心是:内部的Button组件本身要求必须绑定onPress方法,哪怕外层已经用TouchableOpacity加了点击事件,只要Button没设置onPress,就会抛出这个错误。
解决方案
方案1:给内部Button添加onPress(复用外层逻辑或传空函数)
直接给Button补上onPress属性,要么和外层执行同样的导航逻辑,要么传个空函数占位:
<TouchableOpacity style={styles.widgetCont} onPress={() => navigate(AppRoutes.Settings.Name)} > <Text style={styles.widgetText}>{setupRemindersDescription}</Text> <Button title={setupRemindersLabel} buttonStyle={[buttons.primarySpace, styles.widgetBTN]} titleStyle={buttons.smallTitle} onPress={() => navigate(AppRoutes.Settings.Name)} // 补上这个属性 /> </TouchableOpacity>
方案2:用Text组件模拟按钮样式
如果不需要Button组件的默认交互反馈,可以直接用Text组件配合样式代替Button,避免onPress的强制要求:
<TouchableOpacity style={styles.widgetCont} onPress={() => navigate(AppRoutes.Settings.Name)} > <Text style={styles.widgetText}>{setupRemindersDescription}</Text> <Text style={[buttons.primarySpace, styles.widgetBTN, buttons.smallTitle]}> {setupRemindersLabel} </Text> </TouchableOpacity>
为什么正常代码能运行?
你提供的正常代码里,要么是使用的Button组件经过自定义封装,允许不传递onPress属性;要么是该场景下Button的onPress校验被默认忽略了,但显然在报错场景中,你用的Button组件强制要求必须绑定点击方法。
内容的提问来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

