CheckBox点击,无法改变选中与未选中的图标
来源:5-8 Popular(最热)模块的自定义标签功能实现-3

Mr_Chansheng
2018-08-26
CheckBox的代码如下,点击CheckBox时,并不能改变它的图标。但是数据却是有保存了,说明了点击事件是有效的,但是就是不能随着点击改变它的图标
我怀疑是因为界面没有重新渲染,所以没有更新图标。于是又写了个demo。
constructor(props) { super(props); this.state = { isChecked: false, }; } <CheckBox isChecked={this.state.isChecked} onClick={()=>{ this.setState({ isChecked: !this.state.isChecked, }); }} leftText='CheckBox' checkedImage={<Image source={require('./img/ic_check_box.png')} style={{tintColor: '#2196F3'}}/>} unCheckedImage={<Image source={require('./img/ic_check_box_outline_blank.png')} style={{tintColor: '#2196F3'}}/>} />
这次在点击事件中改变state值,果然就有更新图标了。
看了源码中的onClick方法后很疑惑,
constructor(props) { super(props); } onClick() { this.setState({ isChecked: !this.props.isChecked }) this.props.onClick(); }
它在初始化中都没有设置state值,为什么在onClick中要去改变state值,这个应该是无效的吧?所以才造成了界面没有重新渲染。而且
onClick: PropTypes.func.isRequired,
onClick竟然是必须的,还没有默认值。如果不设置就报错。而我一开始认为的CheckBox是即使我不设置其他属性,我点击它,它也会有默认的图标切换。本人水平有限,希望老师能解答一下这样写法的好处,或者是为了什么作者要这样去写,从老师观点出发就好。
写回答
1回答
-
check下所实用的react-native-check-box版本是否正确:
新版本RN使用react-native-check-box v2.1.2或以上版本;
旧版RN实用react-native-check-box v2.0.2或以下版本;
提示:新版本react-native-check-box使用方式略有不同,详情参考:https://github.com/crazycodeboy/react-native-check-box
012018-08-27
相似问题