我想制作一个表单,把react-bootstrap的表单控件都用一遍
先return这么一堆表单控件,爱好那里的复选框数据放在state里面
页面展示效果这样
然后就需要取值了,学习ref知识后,我给每个Form.Control标签都加上了ref属性,再在提交方法里通过React.createRef()获取标签的值。但是react官方文档说让避免频繁使用ref功能,经过指导精简方法:
给state里定义所有的输入框的字段名,值为空;
把每个Form.Control标签的ref属性删掉,换成onChange,方法名相同,给方法传递不同的输入框的字段名当参数;
在onChange的函数里return一个函数作为onChange的回调函数,回调函数自动接收event,在回调函数里this.setState({输入框的字段名:event.target.value})更新state所有的输入框的字段值;
点击提交时从state里取值。
但是复选框不好取值,给复选框放另一个 onChange事件,在事件里判断每次点击时的节点是否选中状态,
如果是选中状态就把选中的值拼接字符串,再把state里的likeDate(复选框数据)里对应的选项的checked设置为true(因为页面展示由likeDate控制中),
如果是取消选中状态就把拼接的字符串中对应的值删掉,state里的likeDate里对应的选项的checked设置为false,
最后将拼接好的多选值this.setState({like:选中的字符串})。
暂时符合一般大众表单功能。