无需转类组件 React函数组件切换图片仅显示checked.png如何解决
问题原因
代码中Image组件source属性的判断条件写法错误:
你写的{ check } === true是将一个包裹了check变量的对象和布尔值true做全等比较,对象和布尔值的全等比较结果永远为false,所以逻辑永远走到加载checked.png的分支,自然不会切换图片。
修正后的代码
直接判断check变量本身的值即可:
const SignUpScreen = () => { const [check, setCheck] = useState(false); const changeImage = () => { setCheck((prevCheck) => !prevCheck); }; return ( <View> <Text> Select the box to change the image </Text> <TouchableOpacity onPress={changeImage}> <Image source={ check === true ? require("../img/unchecked.png") : require("../img/checked.png") } /> </TouchableOpacity> </View> ); }; export default SignUpScreen;
可选优化说明
check本身就是布尔类型,判断条件可以直接简写为check ? require("../img/unchecked.png") : require("../img/checked.png")onPress绑定回调时不需要额外包裹一层箭头函数,直接传入changeImage即可,效果完全一致,代码更简洁
内容的提问来源于stack exchange,提问作者user16372363
相关产品推荐
相关产品推荐

