React组件(上)

简介: React组件

React组件


目标

能够知道受控组件是什么

能够写出受控组件

了解非受控组件

表单处理

受控组件(★★★)

HTML中的表单元素是可输入的,也就是有自己的可变状态

而React中可变状态通常保存在state中,并且只能通过setState() 方法来修改

React讲state与表单元素值value绑定在一起,有state的值来控制表单元素的值

受控组件:值受到react控制的表单元素

使用步骤

在state中添加一个状态,作为表单元素的value值

给表单元素绑定change事件,将表单元素的值设置为state的值

示例demo

classAppextendsReact.Component {
constructor(){
super()
this.inputChange=this.inputChange.bind(this)
    }
state= {
txt : ''    }
inputChange(e){
this.setState({
txt: e.target.value       })
    }
render(){
console.log(this.state);
return (
<div>                {/* 把state的值设置给输入框的value,绑定change事件,这样用户在输入内容的时候调用相应函数,在函数里面把当前设置的值赋值给state,从而达到数据的统一 */}
<inputtype="text"value={this.state.txt} onChange={this.inputChange}/></div>        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'))


多表单元素优化

问题:每个表单元素都有一个单独的事件处理函数,这样太繁琐

优化:使用一个事件处理程序同时处理多个表单元素

步骤

给表单元素添加name属性(用来区分是哪一个表单),名称与state相同(用来更新数据的)

根据表单内容来获取对应值

在change事件处理程序中通过 [name] 来修改对应的state

示例demo

inputChange(e){
lettarget=e.target;
letvalue=target.type=='checkbox'?target.checked : target.value;
this.setState({
       [e.target.name]: value   })
}
<inputtype="text"value={this.state.txt} name="txt"onChange={this.inputChange}/><inputtype="checkbox"value={this.state.isChecked} name="isChecked"onChange={this.inputChange}/>


非受控组件 (了解)

说明:借助于ref,使用元素DOM方式获取表单元素值

ref的作用:获取DOM或者组件

使用步骤

调用 React.createRef() 方法创建ref对象

将创建好的 ref 对象添加到文本框中

通过ref对象获取到文本框的值

classAppextendsReact.Component {
constructor(){
super()
//创建 refthis.txtRef=React.createRef()
    }
// 获取文本框的值getTxt=() => {
console.log(this.txtRef.current.value)
    }
render(){
return (
<div><inputtype="text"ref={this.txtRef} /><buttononClick={this.getTxt}>获取值</button></div>        )
    }
}



相关文章
|
6月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
362 0
|
6月前
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
77 0
|
6月前
|
前端开发
【第31期】一文学会用React Hooks组件编写组件
【第31期】一文学会用React Hooks组件编写组件
79 0
|
6月前
|
存储 前端开发 JavaScript
【第29期】一文学会用React类组件编写组件
【第29期】一文学会用React类组件编写组件
76 0
|
6月前
|
前端开发 开发者
【第26期】一文读懂React组件编写方式
【第26期】一文读懂React组件编写方式
64 0
|
6月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
122 0
|
6月前
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
52 1
|
6月前
|
前端开发 JavaScript API
React组件生命周期
React组件生命周期
119 1
|
6月前
|
存储 前端开发 JavaScript
探索 React Hooks 的世界:如何构建出色的组件(下)
探索 React Hooks 的世界:如何构建出色的组件(下)
探索 React Hooks 的世界:如何构建出色的组件(下)
|
6月前
|
缓存 前端开发 API
探索 React Hooks 的世界:如何构建出色的组件(上)
探索 React Hooks 的世界:如何构建出色的组件(上)
探索 React Hooks 的世界:如何构建出色的组件(上)