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 事件流和事件绑定
Jul 16 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
Jul 05 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
js调用刷新界面的几种方式
May 03 Javascript
Angular 如何使用第三方库的方法
Apr 18 Javascript
js实现京东秒杀倒计时功能
Jan 21 Javascript
Servlet返回的数据js解析2种方法
Dec 12 Javascript
javascript执行上下文、变量对象实例分析
Apr 25 Javascript
分享一款超好用的JavaScript 打包压缩工具
Apr 26 Javascript
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
PHP中redis的用法深入解析
2014/02/20 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
JS 统计时间
2021/03/09 Javascript
js用图作提交按钮或超连接
2008/03/26 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
深入理解Node module模块
2018/03/26 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
使用Python写个小监控
2016/01/27 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
python中round函数保留两位小数的方法
2020/12/04 Python
python drf各类组件的用法和作用
2021/01/12 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
乔迁宴答谢词
2014/01/21 职场文书
初中校园广播稿
2014/02/02 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
校车安全管理责任书
2015/05/11 职场文书
卖车协议书范文
2016/03/23 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
MySQL 计算连续登录天数
2022/05/11 MySQL