一、不可控组件

 <input type="text" defaultvalue="Hello React" />

如上:defaultvalue的值是固定的,这就是一个不可控组件

如果要获取input的value值,只有使用ref获取节点来获取值

二、可控组件

 <input type="text" defaultvalue={this.state.value} />

如上:defaultvalue的值是根据状态确定的,只需要拿到this.state.value的值就可以了,

这里需要注意一下:使用value的值是不可以修改的,defaultValue的值是可以修改的

三、可控组件的优点

1、符合React的数据流

2、数据存储在state中,便于获取

3、便于处理数据

 import React from 'react';
import ReactDOM from 'react-dom'; // 不可控组建,要是使用refs属性对DOM节点进行操作
class UnControll extends React.Component {
submitData = (e)=> {
var userInput1 = ReactDOM.findDOMNode(this.refs.userInput1).value;
var userInput2 = ReactDOM.findDOMNode(this.refs.userInput2).value;
alert(userInput1);
alert(userInput2)
e.preventDefault();
}
render(){
return (
<form onSubmit={this.submitData}>
{/*
在表单中,使用value是无法改变的,需要使用defaultValue
checked与defaultChecked同上
*/}
<input
type="text"
value="不可控组件"
ref="userInput1"
/>
<input
type="text"
defaultValue="不可控组件"
ref="userInput2"
/>
<button>提交</button>
</form>
)
}
} // 可控组建,不需要对DOM进行操作
class Controll extends React.Component {
state = { value:'可控组件' }
submitData = (e)=> {
alert(this.state.value);
e.preventDefault();
}
handleChange = (e)=>{
this.setState({
value:e.target.value
})
}
render() {
return (
<form onSubmit={this.submitData}>
<input
type="text"
defaultValue={this.state.value}
onChange={this.handleChange}
/>
<button>提交</button>
</form>
);
}
} export default Controll;

react之可控组件与不可控组件的更多相关文章

  1. React受控组件和非受控组件

    受控组件和非受控组件主要是用来解决表单组件状态谁来控制的问题.因为用户的输入会反应在界面上,相当于视图的状态发生了变化,而react是通过虚拟DOM比对修改视图的,这里就要决定谁来控制表单组件的状态. ...

  2. React Native填坑之旅--Stateless组件

    Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ re ...

  3. 基于React Native的Material Design风格的组件库 MRN

    基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...

  4. 【react】利用prop-types第三方库对组件的props中的变量进行类型检测

    1.引言--JavaScript就是一个熊孩子   1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java ...

  5. 5. React 组件的协同使用 组件嵌套和Mixin

            组件是React的核心,构建大型项目时多个组件之间需要进行协同使用.可以从横向和纵向两个角度来实现组件的协同使用,纵向的协同使用就是组件嵌套,横向的协同使用就是Mixin(抽取公共方法 ...

  6. React:受控组件与非受控组件混用实战 - 译文

    原文链接:React: hybrid controlled components in action 受控组件 非受控组件 混用受控组件和非受控组件 原则一 原则二 原则三 原则四 实施方案 总结 F ...

  7. react初探(二)之父子组件通信、封装公共组件

    一.前言 在组件方面react和Vue一样的,核心思想玩的就是组件,下面举两个组件常用的情景. 场景一:假如我们现在有一个页面包含表格以及多个弹框,这种时候如果将这个页面的业务代码写在一个组件中,那么 ...

  8. 三大前端框架(react、vue、angular2+)父子组件通信总结

    公司业务需要,react.vue.angular都有接触[\无奈脸].虽然说可以拓展知识广度,但是在深度上很让人头疼.最近没事的时候回忆各框架父子组件通信,发现很模糊,于是乎稍微做了一下功课,记录于此 ...

  9. React中嵌套组件与被嵌套组件的通信

    前言 在React项目的开发中经常会遇到这样一个场景:嵌套组件与被嵌套组件的通信. 比如Tab组件啊,或者下拉框组件. 场景 这里应用一个最简单的Tab组件来呈现这个场景. import React, ...

随机推荐

  1. ionic:安装

    ylbtech-ionic:安装 1.返回顶部 1. ionic 安装 本站实例采用了ionic v1.3.2 版本,使用的 CDN 库地址: <link href="https:// ...

  2. json对象数组的创建、遍历、添加、删除、修改、js的splice()用法

    本文链接:https://blog.csdn.net/houfengfei668/article/details/79843625 )第二种方式:手动构造json对象数组 )for )用splice方 ...

  3. 关于__init__.py

    假设程序目录结构如下: ├── checkpoints/ ├── data/ │ ├── __init__.py │ ├── dataset.py │ └── get_data.sh ├── mode ...

  4. mysql 04_章基本查询

    当我们使用select查询语句向数据库发送一个查询请求,数据库会根据请求执行查询,并返回一个虚拟表,其数据来源于真实的数据表. 一.查询所有数据:所有的字段.所有的记录 格式:SELECT * FRO ...

  5. Ansible配置及使用

    使用公私钥实现ssh无密码登录 生成公钥和私钥 ssh-keygen -t rsa 公钥相当于锁id_rsa.pub,私钥相当于钥匙id_rsa 借用ssh-copy-id工具实现无密码登录 ssh- ...

  6. PHP算法之Z 字形变换

    将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I RE T ...

  7. file对象的获取 radio值的获取

    jq $("#hiddenFile").get(0).filesjs this.files; 获取radio的值 $('input:radio:checked').val(): $ ...

  8. soj考试2

    T1:子图 给你一棵带点权的树,对于所有i∈[1,m],问树上是否存在连通子图的权值和=i? n<=3000,m<=100000. 朴素的背包树形dp有nm的复杂度,bitset也无处优化 ...

  9. soj115 御坂网络

    题意:平面上有n个A发射点和m个B发射点,可以选择安置相应A/B装置,装置范围是圆,自取半径(要求都相同且<=Rmax).异种要求范围不相交.求装置范围之和(不是并!). 标程: #includ ...

  10. R语言 循环

    R语言循环 可能有一种情况,当你需要执行一段代码几次. 通常,顺序执行语句. 首先执行函数中的第一个语句,然后执行第二个语句,依此类推. 编程语言提供允许更复杂的执行路径的各种控制结构. 循环语句允许 ...