这是一个标准的类组件

import React,{Component} from 'react';
class View extends Component{constructor(props){super(props)}state={}  //写在这里跟写在constructor中一样,都可以起到初始化的效果,并且可以省去thisfn(){}fn1(){}render(){return(<div><button onClick={this.fn}>按钮</button><ul>{this.fn1()}</ul></div>)   }
}

接下来是this指向的问题

主要分三个模块:

  • constructor:this指向new生成的实例,这里也就是我们的View组件了

  • render():this指向也是组件实例View

  • 方法:

       fn(): this指向是undefind fn1(): this指向是组件实例
    

为什么fn()的指向是undefined?

分析:
1、我们知道调用都是有()的,所以这里只是把onClick指向堆中的fn,调用时也就没有实例————所以this会指向window
2、使用babel编译后就是严格模式(严格模式下this不能指向window),所以this就会变为undefined

改变方法this指向的4种方法

  1. 在contructor写入this.fn=this.fn.bind(this)

    会在实例的属性中添加一个fn属性,指向改变this指向之后的fn(),原型链的的fn()并无变化。
    使用bind是因为不会自执行,而call,apply都会自执行

  2. 方法使用箭头函数的写法fn=()=>{}

    箭头函数this指向特性

  3. 调用时使用箭头函数,可以传参()=>{this.fn("text")}
  4. 调用时使用bind改变this指向,也可以传参this.fn.bind(this,'text')

react中类组件this指向相关推荐

  1. react中类组件this的指向问题

    1.铺垫知识 a.普通函数的this指向 若是一个普通函数直接被调用,那this默认是指向全局的,若是非严格模式下,则是指向window的 function display(){console.log ...

  2. react中类组件传值,函数组件传值:父子组件传值、非父子组件传值

    父子组件传值.非父子组件传值: 类组件传值 父子 组件传值 子 传 父: 子组件:事件的触发sendMsg=()=>{this.props.person();}父组件:<Child per ...

  3. React类组件的两种写法

    react中类组件的两种写法: 要点:•类组件必须要继承React.Component •类组件中的render()方法,返回值是一个jsx // 方式一: import React from 're ...

  4. React 函数式组件缓存原理

    对 React 函数式组件缓存的思考 自从 React 16.8 版本推出 Hooks 用法以来,围绕函数组件的优化出现了各种不同的思考.本篇文章从 React 底层 Render 角度,分析 Rea ...

  5. react创建组件_如何使用React创建时间轴组件

    react创建组件 These days I've been working on a new page for my website. I wanted to have a Timeline to ...

  6. React创建组件的三种方式及其区别

    React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归:具体的三种方式: 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的ext ...

  7. react 调用组件方法_React源码分析1 — 组件和对象的创建(createClass,createElement)...

    1 组件的创建 学习了半年前端了,感觉前端的水确实也很深.做安卓的时候就对React-Native比较感兴趣,开发H5时也使用了一段时间的ReactJS.所以决定好好分析下它的源码.文章中有不对的地方 ...

  8. React的组件生命周期

    1. 挂载卸载过程 1.1.constructor() 1.2.componentWillMount() 1.3.componentDidMount() 1.4.componentWillUnmoun ...

  9. 【React 基础】之 React 面向组件编程

    准备工作 使用 React 开发者工具调试 复习 类 相关知识 定义 class(类),代码如下: // 创建一个 Person 类 class Person {// 构造器方法constructor ...

最新文章

  1. ArrayList, LinkedList , Vector
  2. 迈向更高效通用的加速之路:谷歌提出视觉和多任务MoE方法
  3. linux 配置 java 环境变量
  4. 关于对 linux系统的物理内存访问 /dev/mem
  5. js遍历追加html子样式,前端基本功:JS(十一)动画封装(CSS样式获取、JSON遍历)...
  6. ----------------学习进度表---------------------------------
  7. qt开发环境 - 简易二进制文件打开,串口自发自收
  8. 利用FormData对象实现AJAX文件上传功能及后端实现
  9. 2021年的高考大约多久可以查询成绩,2021高考完什么时候可以查分数 查成绩的时间...
  10. oracle虚拟机磁盘共享,在虚拟机上VM 添加一块共享磁盘方法 支持Oracle 10g RAC
  11. 登录服务器时显示 IE COOKIE阻止,[IE问题]IE相关设置-智明协同
  12. 【高等数学笔记】格林公式、高斯公式、斯托克斯公式、场论
  13. 人工神经网络概念梳理与实例演示
  14. 【FTP】FTP连接时出现“227 Entering Passive Mode”的解决方法
  15. 模板消息接口php代码demo,发送模板API例子
  16. PSINS_Toolbox使用心得1
  17. Debian在vi编辑器里方向键变ABCD,退格键失效
  18. Linux下__attribute__((aligned(n)))的使用
  19. 基于Java+SpringMVC+Mybaties+jsp+layui实现的宿舍管理系统设计与实现
  20. linux mv 文件夹不存在,linux 命令 mv abc.txt ../ 后文件不见了?

热门文章

  1. 京东广告联盟android,京东APP联盟SDKAndroid版接口说明文档1.0.PDF
  2. python如何读取数据时出现错误_连接数据库时出现的错误,怎样解决??
  3. 自适应浮动表单填充布局脚本
  4. 签字后被开除_员工虚假报销公司可以开除吗?
  5. “阿法狗”之父:关于围棋,人类3000年来犯了一个错
  6. 被文献坑是一种什么样的体验?
  7. html5之api,HTML5之API(示例代码)
  8. php使用未定义常数,php-使用未定义的常量SIGTERM-gt;假定为’SIGTERM’
  9. 统计整数n的二进制表示中1的个数
  10. 利用正则匹配url是否合法对于有的url会浪费过长时间使程序卡死,切记!