1. 可控组件和不可控组件
2. 不同表单元素的使用
3. 如何复用事件处理函数
1.1 不可控组件
前面这个简单的input组件[react中有两大类组件,一类是自定义的组件,另一类是原生的HTML标签]就是一个不可控组件。
因为组件中的数据和state中的数据不再对应,而是写死在了组件中。组件中的数据对整个组件来说是不可控的。
不可控组件组件下,如果我们要获取到defaultValue的值,就必须得去操作真实的DOM.
|
|
给组件添加ref属性,然后通过React.findDOMNode()找到对应的节点。
1.2 可控组件
|
|
上面这个就是可控组件,数据存储在state中,便于使用,读取的是JS对象而不是DOM节点。符合reac单向数据流的特点,数据从state–>render。
使用可控组件可以方便的对数据进行处理,比如在handleChange里面可以对数据进行方便的操作。
2. 不同表单元素的使用
|
|
|
|
|
|
说明一下上面select的value是每次被选中option的value
3. 如何复用事件处理函数
事件函数的可以有bind和name复用两种
bind每次将第二参数传给handleChange的name,这样每次调用handleChange,就可以分辨出是哪个input发生了变化。
给input添加name属性,每次在handleChange中获取目标事件的name,确定要处理的input.达到复用事件处理函数。
两种方法都可以复用事件处理函数。不过通过name实现的复用性能比bind实现的低。前者每次都会在事件处理函数中获取一次name的值,后者直接在参数中直接传入。推荐使用bind.