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_03_javascript全局观
Oct 11 Javascript
jQuery学习笔记 更改jQuery对象
Sep 19 Javascript
浅析JavaScript中的类型和对象
Nov 29 Javascript
清除div下面的所有标签的方法
Feb 17 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
Bootstrap禁用响应式布局的实现方法
Mar 09 Javascript
vue2.0 自定义日期时间过滤器
Jun 07 Javascript
浅谈es6 javascript的map数据结构
Dec 14 Javascript
详解性能更优越的小程序图片懒加载方式
Jul 18 Javascript
js实现同一个页面,多个enter事件绑定的示例
Oct 10 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
vue 封装面包屑组件教程
Nov 16 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安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
pytorch permute维度转换方法
2018/12/14 Python
Python单元和文档测试实例详解
2019/04/11 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
django orm模块中的 is_delete用法
2020/05/20 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
酒店采购员岗位职责
2014/03/14 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
音乐之声观后感
2015/06/04 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
python如何在word中存储本地图片
2021/04/07 Python
使用nginx配置访问wgcloud的方法
2021/06/26 Servers