React 教程第七篇 —— 表单
发布时间:2020-12-15 06:26:53 所属栏目:百科 来源:网络整理
导读:表单 React 是个单向数据流的框架,所以在表单元素与其它 DOM 元素有所不同,而且和双向绑定的框架在操作上也有很大不一样。所以在这里单独拿出来说。 输入受控 import React from 'react'import ReactDOM from 'react-dom'class Component1 extends React.C
表单React 是个单向数据流的框架,所以在表单元素与其它 DOM 元素有所不同,而且和双向绑定的框架在操作上也有很大不一样。所以在这里单独拿出来说。 输入受控import React from 'react' import ReactDOM from 'react-dom' class Component1 extends React.Component{ constructor(props){ super(props) this.state = { text: 'Hello React' } } render(){ return ( <div> <p><label>写死value-锁定状态</label><input type="text" value="hello react"/></p> <p><label>动态value-锁定状态</label><input type="text" value={this.state.text}/></p> <p><label>不指定value-没锁状态</label><input type="text"/></p> </div> ) } } ReactDOM.render(<Component1 />,document.getElementById('div1')); 这个案例说明了在 React 在表单元素因单向数据流所以在 value 给定后就无法再次修改,所以需要配合 class Component1 extends React.Component{ constructor(props){ super(props) this.state = { text: 'Hello React' } } change = (e) => { this.setState({text: e.target.value}) } render(){ return ( <div> <p><label>写死value-锁定状态</label><input type="text" value="hello react" onChange={this.change}/></p> <p><label>动态value-没锁状态</label><input type="text" value={this.state.text} onChange={this.change}/></p> <p><label>不指定value-没锁状态</label><input type="text"/></p> </div> ) } } 效果预览 textarea 元素在普通 HTML 中, <textarea> Hello there,this is some text in a text area </textarea> 但在 React 中,该元素需要使用 class Component1 extends React.Component{ constructor(props){ super(props) this.state = { text: 'Hello React' } } change = (e) => { this.setState({text: e.target.value}) } render(){ return ( <div> <textarea value={this.state.text} onChange={this.change}/> </div> ) } } select 元素在普通 HTML 中, <select> <option value="grapefruit">Grapefruit</option> <option value="lime">Lime</option> <option selected value="coconut">Coconut</option> <option value="mango">Mango</option> </select> 但在 React 中,只需要给定属性 class Component1 extends React.Component{ constructor(props){ super(props) this.state = { text: 'lime' } } change = (e) => { this.setState({text: e.target.value}) } render(){ return ( <div> <select value={this.state.text} onChange={this.change}> <option value="grapefruit">Grapefruit</option> <option value="lime">Lime</option> <option value="coconut">Coconut</option> <option value="mango">Mango</option> </select> </div> ) } } input file 元素因为 class Component1 extends React.Component{ submit = (e) => { console.log(this.file.files) } render(){ return ( <div> <input type='file' ref={input => {this.file = input}}/> <input type="button" value="submit" onClick={this.submit} /> </div> ) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 为ServicePointManager.SecurityProtocol设置每个请求
- 主厨的食谱依赖关系
- 由于未解析的依赖关系,Maven Javadoc aggregate-jar插件失败
- DOJO常用的验证函数
- cocos2d::DrawPrimitives和DrawNode分别实现画板功能
- c – ucontext和线程本地存储
- ruby-on-rails – 缓存有限的关联
- reactjs – 如何使用browserify,babel,eslint,react / jsx和
- cef 3.2357版本之后无法加载flash的问题
- postgresql – 如何检查Postgres中的现有聚合函数?