博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React入门
阅读量:5875 次
发布时间:2019-06-19

本文共 1983 字,大约阅读时间需要 6 分钟。

参考:

官方文档:

JSX 的基本语法规则

遇到HTML 标签(以 < 开头),就用 HTML 规则解析;遇到代码块(以 {

开头),就用 JavaScript 规则解析

1  2      3        4          5          6          7        8        9         
10 23 24

React 组件

React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。React.createClass 方法就用于生成一个组件类

1     var HelloMessage = React.createClass({ 2       render: function() { 3         return 

Hello {
this.props.name}

; 4 } 5 }); 6 7 ReactDOM.render( 8
, 9 document.getElementById('example')10 );

组件的用法与原生的 HTML 标签完全一致,可以任意加入属性

组件的属性可以接受任意值,字符串、对象、函数等等都可以

组件的属性可以在组件类的 this.props 对象上获取,比如 name 属性就可以通过 this.props.name 读取;

组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求

1     var MyTitle = React.createClass({2       propTypes: {3         title: React.PropTypes.string.isRequired,4       },5 6       render: function() {7          return 

{
this.props.title}

;8 }9 });

ref 属性:从组件获取真实 DOM 的节点

1     var MyComponent = React.createClass({ 2       handleClick: function() { 3         this.refs.myTextInput.focus(); 4       }, 5       render: function() { 6         return ( 7           
8
9
10
11 );12 }13 });14 15 ReactDOM.render(16
,17 document.getElementById('example')18 );
View Code

上面代码中,组件 MyComponent 的子节点有一个文本输入框,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 是拿不到用户输入的。为了做到这一点,文本输入框必须有一个 ref 属性,然后 this.refs.[refName] 就会返回这个真实的 DOM 节点。

需要注意的是,由于 this.refs.[refName] 属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。上面代码中,通过为组件指定 Click 事件的回调函数,确保了只有等到真实 DOM 发生 Click 事件之后,才会读取 this.refs.[refName] 属性。

React 组件支持很多事件,除了 Click 事件以外,还有 KeyDownCopyScroll 等,完整的事件清单请查看。

注意:

1、组件类的第一个字母必须大写;

2、组件类只能包含一个顶层标签;

3、添加组件属性, class 属性需要写成 classNamefor 属性需要写成 htmlFor ,这是因为 classfor 是 JavaScript 的保留字;

4、this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点

 

React 组件
反应组件

转载于:https://www.cnblogs.com/anyun/p/8296884.html

你可能感兴趣的文章
MapReduce工作原理流程简介
查看>>
那些年追过的......写过的技术博客
查看>>
小米手机解锁bootload教程及常见问题
查看>>
Python内置函数property()使用实例
查看>>
Spring MVC NoClassDefFoundError 问题的解决方法。
查看>>
CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
C# 解决窗体闪烁
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
【OpenStack】network相关知识学习
查看>>
centos 7下独立的python 2.7环境安装
查看>>
[日常] 算法-单链表的创建
查看>>
前端工程化系列[01]-Bower包管理工具的使用
查看>>
使用 maven 自动将源码打包并发布
查看>>
Spark:求出分组内的TopN
查看>>
Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特
查看>>
关于跨DB增量(增、改)同步两张表的数据小技巧
查看>>
飞秋无法显示局域网好友
查看>>
学员会诊之03:你那惨不忍睹的三层架构
查看>>
vue-04-组件
查看>>