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 相关文章推荐
SWFObject 2.1以上版本语法介绍
Jul 10 Javascript
封装的原生javascript弹出层代码
Sep 24 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
详解如何在vue项目中引入elementUI组件
Feb 11 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
jQuery分组选择器简单用法示例
Apr 04 jQuery
vue 表单之通过v-model绑定单选按钮radio
May 13 Javascript
Vue3.x源码调试的实现方法
Oct 13 Javascript
JS事件循环机制event loop宏任务微任务原理解析
Aug 04 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
如何开始收听短波广播
2021/03/01 无线电
PHP函数extension_loaded()用法实例
2015/01/19 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
小学庆六一活动方案
2014/02/28 职场文书
建议书的格式
2014/05/12 职场文书
社区矫正工作方案
2014/06/04 职场文书
空气环保标语
2014/06/12 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
校本课程教学计划
2015/01/19 职场文书
寒假生活随笔
2015/08/15 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
python数字类型和占位符详情
2022/03/13 Python