React学习之JSX与react事件实例分析


Posted in Javascript onJanuary 06, 2020

本文实例讲述了React学习之JSX与react事件。分享给大家供大家参考,具体如下:

1、JSX

1.1、表达式

在React中使用JSX来描述HTML页面,而且可以与js混合使用,使用JavaScript表达式时要将表达式包含在大括号里

const user = {
 firstName: 'Harper',
 lastName: 'Perez'
};
const element = (    //将JSX语句保存在变量中
 <h1>
  Hello, {formatName(user)}!  {/* {}中写js语句*/}
 </h1>
);

在编译之后呢,JSX 其实会被转化为普通的 JavaScript 对象,可以对其赋值或把它当作参数传递:

ReactDOM.render(
 element,        //通过JSX变量渲染react节点
 document.getElementById('root')
);

1.2、属性

JSX中可以像HTML中一样使用"字符串"的属性,也可以使用{表达式}属性:

const element = <div tabIndex="0"></div>;
const element = <img src={user.avatarUrl}></img>;

注意:

1、React DOM 使用 camelCase 小驼峰命名 来定义属性的名称,而不是使用 HTML 的属性名称。例如font-size要改为fontSize。

2、HTML中的保留字不能用于js中,例如class,应改为className:

const ele= <div className="red">Red Color</div>

3、JSX中行内样式style需要用一个对象返回,而不是字符串:

const ele=<div style="color:red">Red</div>     //会报错
const ele= <div style={{color:'red'}}>Red</div>

{{color:red}}中第一个大括号代表这是一个js表达式,第二个代表这是一个用大括号引起的对象

1.3、嵌套

如果 JSX 标签是闭合式的,那么需要在结尾处用 />:

const element = <img src={user.avatarUrl} />;

jJSX内含多个标签时,返回时需要在最外面用一个div把它们包起来:

const element = (
 <div>
  <h1>Hello!</h1>
  <h2>Good to see you here.</h2>
 </div>
);

1.4、注释

在jsx中的注释要单独占一行,且用大括号包起来,例如:{/*注释*/},否则有可能会被当成普通文本,引起错误。

2、事件

react事件的绑定采用驼峰写法onClick={this.function}

例如定义一个切换ON/OFF的函数shiftFlag:

class Toggole extends React.Component{
 constructor(props){
  super(props);
  this.state={
   flag:true
  };
  this.shiftFlag=this.shiftFlag.bind(this);   //函数shiftFlag绑定this
 }
 shiftFlag(e){
  e.preventDefault();
  this.setState({
   flag:!this.state.flag
  });
 }
 render(){
  return <a href="#" rel="external nofollow" onClick={this.shiftFlag}>{this.state.flag?'ON':'OFF'}</a>
 }
}

注:

1、类的方法默认是不会绑定this的,直接在方法shiftFlag中使用this会报错this is undefined,因此需要为shiftFlag绑定this。

2、e是一个事件参数,使用e.preventDefault()方法来阻止a标签的默认跳转行为。

react事件参数的传递通过绑定来实现,在传递时,绑定的this在前,参数在后。在定义函数时,事件对象e要放在最后,例如定义一个setName函数修改name为传入的参数:

class Name extends React.Component{
 constructor(props){
  super(props);
  this.state={
   name:'default'
  }
 }
 setName(name,e){   //事件e放在最后
  this.setState({
   name:name
  })
 }
 render(){
  return <button onClick={this.setName.bind(this,'tory')}>{this.state.name}</button>
 }
}

希望本文所述对大家React程序设计有所帮助。

Javascript 相关文章推荐
弹出广告特效(一个IP只弹出一次)的代码
Jul 27 Javascript
Javascript 复制数组实现代码
Nov 26 Javascript
解析js如何获取当前url中的参数值并复制给input
Jun 23 Javascript
jQuery源码解读之removeClass()方法分析
Feb 20 Javascript
JavaScript中的函数嵌套使用
Jun 04 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
Nov 17 Javascript
使用微信小程序开发弹出框应用实例详解
Oct 18 Javascript
Mint UI组件库CheckList使用及踩坑总结
Dec 20 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
详解一些适用于Node.js的命名约定
Dec 08 Javascript
Vue 3.0 全家桶抢先体验
Apr 28 Javascript
vue学习之Vue-Router用法实例分析
Jan 06 #Javascript
借助云开发实现小程序短信验证码的发送
Jan 06 #Javascript
React学习之受控组件与数据共享实例分析
Jan 06 #Javascript
Node.js创建一个Express服务的方法详解
Jan 06 #Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 #Javascript
基于jQuery实现挂号平台首页源码
Jan 06 #jQuery
JS实现音乐导航特效
Jan 06 #Javascript
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
vue-music关于Player播放器组件详解
2017/11/28 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
意大利在线药房:Saninforma
2021/02/11 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
小学生自我评价范文
2014/01/25 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
教师党员承诺书
2014/03/25 职场文书
运动会演讲稿50字
2014/08/25 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server