es6在react中的应用代码解析


Posted in Javascript onNovember 08, 2017

不论是React还是React-native,facebook官方都推荐使用ES6的语法,没在项目中使用过的话,突然转换过来会遇到一些问题,如果还没有时间系统的学习下ES6那么注意一些常见的写法暂时也就够用的,这会给我们的开发带来很大的便捷,你会体验到ES6语法的无比简洁。下面给大家介绍es6在react中的应用,具体内容如下所示:

import React,{Component} from 'react';
class RepeatArrayextends Component{
 constructor() {  super();
 }
 render(){
  const names = ['Alice', 'Emily', 'Kate'];
  return (
   <div>
   {
    names.map((name) =>{return <div>Hello, {name}!</div>;} )
   }
   </div>
);
}
}
export default RepeatArray;

二、ol与li的实现

import React,{Component} from 'react';
class RepeatLiextends Component{
 render(){
  return (
   <ol>
   {
    this.props.children.map((child)=>{return <li>{child}</li>})
   }
   </ol>
);
}
}
class RepeatArray extends Component{
constructor() {
super();
}
render(){
return (
<div>
<RepeatLi>
<span>hello</span>
    <span>world</span>
</RepeatLi>
   </div>
);
}
}
export default RepeatArray;

三、从服务端获取数据

import React,{Component} from 'react';
class UserGistextends Component{
 constructor(){
  super();
  this.state={
   username:'',
   lastGistUrl:''
  }
 }
 componentWillMount(){
  $.get(this.props.source, function(result){
   var lastGist = result[0];
   //if (this.isMounted()) {
    this.setState({
     username: lastGist.owner.login,
     lastGistUrl: lastGist.html_url
    });
   //}
  }.bind(this));
 }
 render(){
  return(
   <div>
    {this.state.username} ..
    <a href={this.state.lastGistUrl} >here</a>
</div>
  );
 }
}
class RepeatArrayextends Component{
 constructor() {
  super();
 }
 render(){
  return (
   <div>
   <UserGist source="https://api.github.com/users/octocat/gists" />
   </div>
);
}
}
export default RepeatArray;

四、初始化STATE

class Videoextends React.Component{
  constructor(props){
    super(props);
    this.state = {
      loopsRemaining: this.props.maxLoops,
    };
  }
}

五、解构与扩展操作符

在给子组件传递一批属性更为方便了。下面的例子把 className 以外的所有属性传递给 div 标签

class AutoloadingPostsGridextends React.Component{
  render() {
    var {
      className,
      ...others, // contains all properties of this.props except for className
    } = this.props;
    return (
      <div className={className}>
        <PostsGrid {...others} />
        <button onClick={this.handleLoadMoreClick}>Load more</button>
</div>
    );
  }
}

使用 react 开发最常见的问题就是父组件要传给子组件的属性较多时比较麻烦

class MyComponentextends React.Component{
//假设MyComponent已经有了name和age属性
 render(){
  return (
   <SubComponent name={this.props.name} age={this.props.age}/>
   )
 }
}

使用扩展操作符可以变得很简单

class MyComponentextends React.Component{
//假设MyComponent已经有了name和age属性
 render(){
  return (
   <SubComponent {...this.props}/>
   )
 }
}

上述方式是将父组件的所有属性都传递下去,如果这其中有些属性我不需要传递呢?也很简单

class MyComponentextends React.Component{
//假设MyComponent有很多属性,而name属性不需要传递给子组件
 var {name,...MyProps}=this.props;
 render(){
  return (
   <SubComponent {...Myprops}/>
   )
 }
}

上述方法最常用的场景就是父组件的 class 属性需要被单独提取出来作为某个元素的 class ,而其他属性需要传递给子组件

六、创建组件

import React,{Component} from "react";
class MyComponentextends Component{
//组件内部代码
}

七、State/Props/PropTypes

es6 允许将 props 和 propTypes 当作静态属性在类外初始化

class MyComponentextends React.Component{}
MyComponent.defaultProps={
 name:"SunnyChuan",
 age:22
};
MyComponent.propTypes={
 name:React.PropTypes.string.isRequired,
 age:React.PropTypes.number.isRequired
};

es7 支持直接在类中使用变量表达式

class MyComponentextends React.Component{
 static defaultProps={
  name:"SunnyChuan",
  age:22
 }
 static propTypes={
  name:React.PropTypes.string.isRequired,
  age:React.PropTypes.number.isRequired
 }
}

state 和前两个不同,它不是静态的

class MyComponentextends React.Component{
 static defaultProps={
  name:"SunnyChuan",
  age:22
 }
 state={
   isMarried:false
 }
 static propTypes={
  name:React.PropTypes.string.isRequired,
  age:React.PropTypes.number.isRequired
 }
}

七、当你构建通用容器时,扩展属性会非常有用

function App1(){
 return <GreetingfirstName="Ben"lastName="Hector"/>;
}
function App2() {
const props = {firstName: 'Ben', lastName: 'Hector'};
 return <Greeting {...props} />;
}

八、使用es6的计算属性代替

this.setState({
  [name]:value
})
//代替
var partialState = {};
partialState[name] = value;
this.setState(partialState);

总结

以上所述是小编给大家介绍的es6在react中的应用代码解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
csdn 批量接受好友邀请
Feb 19 Javascript
JavaScript中Object和Function的关系小结
Sep 26 Javascript
IE和firefox浏览器的event事件兼容性汇总
Dec 06 Javascript
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
May 28 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
js中的面向对象入门
Mar 06 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
Apr 14 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 jQuery
mac中利用NVM管理不同node版本的方法详解
Nov 08 #Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 #Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 #jQuery
javaScript之split与join的区别(详解)
Nov 08 #Javascript
AngularJs 终极购物车(实例讲解)
Nov 08 #Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 #Javascript
vue实现仿淘宝结账页面实例代码
Nov 08 #Javascript
You might like
重置版战役片段
2020/04/09 魔兽争霸
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
JS 文件大小判断的实现代码
2010/04/07 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python实现字典的key和values的交换
2015/08/04 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
python3+PyQt5实现柱状图
2018/04/24 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python selenium的基本使用方法分析
2019/12/21 Python
基于python实现地址和经纬度转换
2020/05/19 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
施工材料员岗位职责
2014/02/12 职场文书
网络技术专业推荐信
2014/02/20 职场文书
社团活动总结书
2014/06/27 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
单位单身证明样本
2014/10/11 职场文书
学生党员检讨书范文
2014/12/27 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
党员个人总结范文
2015/02/14 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python