前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >(七)解决类中 this 指向问题

(七)解决类中 this 指向问题

作者头像
老怪兽
发布2023-02-22 14:36:13
发布2023-02-22 14:36:13
22000
代码可运行
举报
运行总次数:0
代码可运行

# 🍧一、类组件中 方法的 this

  • 一行代码解决类中 this 指向问题,通过类的关键字 bind 来改变 this 指向
代码语言:javascript
代码运行次数:0
运行
复制
// 1. 创建一个类组件
class Mood extends React.Component {
    constructor(props) {
        super(props)
        // 初始化状态
        this.state = {
            isMood: true
        }
        // 改变 this 指向
        this.demo = this.demo.bind(this)
    }

    render() {
        // 结构赋值 读取状态
        const { isMood } = this.state
        return <h1 onCLick={demo}>今天心情很{isMood ? '开心' : '伤心'}</h1>
    }

    demo() {
        // demo 是放在哪里的? ---- 放在 Mood 的原型对象上
        console.log(this.state.isMood)
    }
}

// 2. 渲染组件到页面
ReactDom.render(<Mood/>, document.getElmentById('test'))

:::分析 bind

代码语言:javascript
代码运行次数:0
运行
复制
xxx = this.medo.bind(this)
  • this 实例对象
  • medo 顺着原型链能找到这个函数
  • bind 能做两件事,1.能生成一个新的函数;2.能够改变函数的 this
  • bind(this)modethis 改成了 实例的 this :::

# 🐴二、简单说一下 bind

代码语言:javascript
代码运行次数:0
运行
复制
function fn() {
    console.log(this)     // 没有开启严格模式 use strict this 是 window
}
fn()  // 直接调用

const x = fn.bind({a:1, b:2})       // 改变了 this 的指向
x()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年12月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 🍧一、类组件中 方法的 this
  • # 🐴二、简单说一下 bind
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档