React Native输入密码触发TypeError:期望布尔类型却获对象类型
解决React Native中TouchableOpacity disabled属性引发的TypeError
开发时出现错误:
Exception in HostFunction: TypeError: expected dynamic type 'boolean', but had type 'object'
触发场景:密码输入框输入特殊字符后再输入数字时程序崩溃。
错误原因
问题出在TouchableOpacity的disabled属性配置上:代码中使用了{loading},这会传递一个对象类型的值给disabled属性,但React Native要求该属性必须是布尔类型,类型不匹配直接导致了崩溃。
修正方案
将disabled属性中的{loading}改为布尔变量loading即可。
修正后的代码片段
<TextInput style={styles.input} placeholder='Password' value={password} secureTextEntry={true} onChangeText={(value) => setPassword(value)} /> <TouchableOpacity style={[ {backgroundColor:"black", borderRadius: 5}, (email.length===0 || password.length<7) && {opacity:.5} ]} disabled={email.length===0 || password.length<7 || loading} onPress={() => signInWithEmail()} > <Text style={{color:"white", padding:10, textAlign:"center"}}>Login</Text> </TouchableOpacity>
内容的提问来源于stack exchange,提问作者Adboy
相关产品推荐
相关产品推荐

