ES6学习笔记

  1. Arrow Function
    箭头函数与传统的函数相比,首先在写法上有点不一样,其次是在this的指向问题.
    常规方法:
 var obj = {
        name :'dong',
        array:['react.js','angular.js','vue.js'],
        getMessage:function(){
            this.array.forEach(function(item){
                 console.log(this.name +' learn '+ item)
            }.bind(this))   
        }   
 }
 obj.getMessage();
 1.1-如果不使用bind()方法,来暴力绑定this,this就指向window了,还有一种解决办法就是手动留住this
 var obj = {
        name :'dong',
        array:['react.js','angular.js','vue.js'],
        getMessage:function(){
            var me = this;
            me.array.forEach(function(item){
                 console.log(me.name +' learn '+ item)
            })  
        }   
 }
 obj.getMessage();
 1.2-es6的箭头函数
本身没有this ,共享父级作用域下的关键字this
 var obj = {
        name :'dong',
        array:['react.js','angular.js','vue.js'],
        getMessage:function(){
            this.array.forEach((item) =>{
                console.log(this.name +' learn '+ item)
            })  
        }   
 }
 obj.getMessage();
1.3-箭头函数的写法,分表达式和函数体
    表达式:
          var fn1 =() =>"无返回值"
          function fn1(){
               return "无返回值";
          }
          //一个参数
          var fn2 =(a) =>a
          function fn2(a){
               return a;
          }
          //多个参数
          var fn3 =(a,b) =>a+b
          function fn3(a,b){
               return a+b;
          }
          //参数为对象
          var fn4 =([a,b]) =>a+b
    函数体:
         var fn5 =(a,b) => {
            var c = a+b;
            return c*3;
         }

2.为什么要在constructor()中调用super();

2.1-首先先规定这样写的原因不是react本身,是ES6语法这样规定的,在子类的constructor中必须先调用super才能引用this
2.2-super(props)的目的:在constructor中可以使用this.props。通过superprops)调用父类也就是React.Component的构造函数。如果在构造函数中没有调用superprops),那么组件实例被构造之后,类实例的所有成员函数就无法通过this.props访问到父组件传递过来的props值。很明显,给this.props赋值是React.Component构造函数的工作之一

3.关于使用ES6的import

  • Example:(写一个移动端的手机面板panel-header的公共组件,图标和标题动态载入)
    这里写图片描述
class PanelHeader extends React.Component{
    constructor(props){
        super(props);
        console.log(props.name);
        this.state={
            style:{
                backgroundImage:'url(./src/images/'+ props.title +'.png)',
                backgroundRepeat: 'no-repeat',
                backgroundSize:' 7%',
                padding: '3vw 0px 3vw 10vw',
                backgroundPosition: '0 50%',
                borderBottom: '1px solid #ddd'
            }   
        }
    }
    render(){
        return (
            <div>
                 <h4 className="panel_header" style={this.state.style}>{this.props.name}</h4>
            </div>
        )
    }
}
export {PanelHeader}; 
3.1-在这里是以export {PanelHeader}的方式输出的,不是用export default PannelHeader默认输出,那么在调用的js文件中引入时就要注意,如果是前者输出,就要使用import {PanelHeader} from 'XXXX',如果是后者默认输出就要用import PanelHeader from 'XXXX'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值