React可控组件与不可控组件

一、不可控组件

1.简介

2.代码

 1 <!DOCTYPE html>
 2 <html lang="zh-cn">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>琛ㄥ崟璇﹁В</title>
 6 </head>
 7 <body>
 8     <script src="./react-0.13.2/react-0.13.2/build/react.js"></script>
 9     <script src="./react-0.13.2/react-0.13.2/build/JSXTransformer.js"></script>
10     <script type="text/jsx">
11         // var MyForm = React.createClass({
12         //     render: function () {
13         //         return <input
14         //         type="text" defaultValue="Hello World!" />;
15         //     }
16         // });
17         var MyForm = React.createClass({
18             submitHandler: function (event) {
19                 event.preventDefault();
20                 var helloTo = React.findDOMNode(this.refs.helloTo).value;
21                 alert(helloTo);
22             },
23             render: function () {
24                 return <form onSubmit={this.submitHandler}>
25                     <input
26                         ref="helloTo"
27                         type="text"
28                         defaultValue="Hello World!" />
29                     <br />
30                     <button type="submit">Speak</button>
31                 </form>;
32             }
33         });
34         React.render(<MyForm></MyForm>, document.body);
35     </script>
36 </body>
37 </html>

二、可控组件

1.简介

2.代码

 1 <!DOCTYPE html>
 2 <html lang="zh-cn">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>表单详解</title>
 6 </head>
 7 <body>
 8     <script src="./react-0.13.2/react-0.13.2/build/react-with-addons.js"></script>
 9     <script src="./react-0.13.2/react-0.13.2/build/JSXTransformer.js"></script>
10     <script type="text/jsx">
11         var MyForm = React.createClass({
12             getInitialState: function () {
13                 return {
14                     helloTo: "Hello World!"
15                 };
16             },
17             handleChange: function (event) {
18                 this.setState({
19                     helloTo: event.target.value
20                 });
21             },
22             submitHandler: function (event) {
23                 event.preventDefault();
24                 alert(this.state.helloTo);
25             },
26             render: function () {
27                 return <form onSubmit={this.submitHandler}>
28                     <input type="text" value={this.state.helloTo} onChange={this.handleChange} />
29                     <br />
30                     <button type="submit">Speak</button>
31                 </form>;
32                 }
33             });
34         React.render(<MyForm></MyForm>, document.body);
35     </script>
36 </body>
37 </html>
时间: 2024-10-07 06:24:12

React可控组件与不可控组件的相关文章

浅谈react受控组件与非受控组件

最近在使用蚂蚁金服出品的一条基于react的ant-design UI组件时遇到一个问题,编辑页面时input输入框会展示保存前的数据,但是是用defaultValue就是不起作用,输入框始终为空值而不是具体的传入的值.具体编辑页面中文本框相关的代码如下:         ... //render方法上面的内容省略  <FormItem       label="问题描述:"       hasFeedback      {...props.formItemLayout}  &g

#003 React 组件 继承 自定义的组件

主题:React组件 继承 自定义的 组件 一.需求说明 情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属性,怎么办? [和 面向对象的语言,C#,Java 的基类 思想是 一样的] 如果公用的东西,是一些方法,可以 使用 React 的 Mixins(ES5) ,高阶组件(ES6)[高阶函数不太了解,如何使用,去找下资料 ] 但是如果有公用的属性,那么就有点 力不从心了 在想,React 中,是否可用

react使用pubsub事件订阅,组件间通信

1.PubSub使用方式 1.1 react导入库 npm install pubsub-js --save 1.2 react 页面引入pubsubjs import PubSub from 'pubsub-js' 1.3 pubsubjs使用 发送消息:PubSub.publish(名称,参数) 订阅消息:PubSub.subscrib(名称,函数) 取消订阅:PubSub.unsubscrib(名称) PS:pubsubjs源码及使用详情https://github.com/mroderi

react:在一个组件中调用别的组件中的方法

先介绍一下要解决的问题:react中一个组件A和一个组件B,其中B是被connect(connect是redux中的方法)包装过的组件,包装成BContainer,A和BContainer的关系是兄弟关系,在同一个父元素下渲染.现在我们要在点击A的时候调用B中的方法 解决思路:主要是用到ref获取BContainer组件挂载之后的实例 render(){ var b = null return(<BContainer ref={(node) => b = node}/>) } ref中的

【React 6/100】 React原理 | setState | JSX语法转换 | 组件更新机制

****关键字 | setState | JSX语法转换 | 组件更新机制 组件更新机制 setState() 的两个作用 修改state 更新组件 过程:父组件重新渲染时,也会重新渲染子组件,但只会渲染当前组件子树(当前组件以其所有子组件) 组件性能优化 减轻state 减轻state:只存储跟组件渲染相关的数据(比如:count/ 列表数据 /loading等) 注意:不用做渲染的数据不要放在state中 对于这种需要在多个方法中用到的数据,应该放到this中 避免不必要的重新渲染 组件更新

react 表单(受控组件和非受控组件)

我们知道表单元素与其他的普通DOM元素来说是不一样的,它们保存了自己的一些状态. 我们主要说的就是表单元素中的受控组件和非受控组件. 受控组件就是这个组件的状态是我们(react)控制的,这个组件的行为是完全受到我们控制的,所以叫做受控组件,比如: 1 class NameForm extends React.Component { 2 constructor(props) { 3 super(props); 4 this.state = {value: ''}; 5 6 this.handle

react 实现组件嵌套以及子组件与父组件之间的通信

当子组件触发onChange事件时,实际调用的是父组件中的handelSelect函数,通俗来说就是父组件通过属性handleSelect实现与子组件之间的通信. 父组件:SignupForm 子组件:GenderSelect 渲染:

受控组件与不受控制的组件有什么区别?

React的很大一部分是将组件控制和管理自己的状态的想法. 当我们将本机HTML表单元素(输入,选择,文本区域等)投入到组合中时会发生什么?我们是否应该使用React作为"单一的真理来源",就像我们习惯使用React一样,或者我们是否允许表单数据生活在DOM中,就像我们习惯于使用HTML表单元素一样?这两个问题是控制和不受控制组件的核心. 甲控制组分为其中阵营处于组分控制和是真理的表单数据的单一来源. 如下所示,用户名不存在于DOM中,而是以我们的组件状态存在.每当我们想要更新用户名时

创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值

1.创建组件的方法   函数组件   class组件 1.1 函数组 无状态函数式组件形式上表现为一个只带有一个 `render()` 方法的组件类,通过函数形式或者 `ES6` 箭头 `function`的形式在创建,并且该组件是无state状态的.具体的创建形式如下 1 import React from 'react '; 2 3 //定义一个React组件 4 function App() { 5 return ( 6 <div> 7 hello React... 8 </div

vue2.0父子组件通信以及同级组件通信

1.父向子通信 父组件为singer.vue.子组件为list-view.vue.需要把歌手的数据传给子组件.则绑定 :data = 'singers' ,singers为父组件的值.data为子组件接收值的名称 子组件采用props的方式接收.data 里面就是父组件传过来的的值了. 值得注意的是.当定义子组件的值有参数时,props里面的default需要向data函数一样写 2 子组件向父组件派发事件 (1)子组件做了一个点击事件 selectItem(item),并传递了一个值 (2)m