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 相关文章推荐
js检测输入内容全为空格的方法
May 03 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
微信开发 微信授权详解
Oct 21 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 Javascript
react高阶组件经典应用之权限控制详解
Sep 07 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 Javascript
vue中简单弹框dialog的实现方法
Feb 26 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
Mar 22 Javascript
three.js实现圆柱体
Dec 30 Javascript
js实现简单进度条效果
Mar 25 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
Angular路由简单学习
2016/12/26 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
Python饼状图的绘制实例
2019/01/15 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python 实现识别图片上的数字
2019/07/30 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP