React学习04----点击事件,函数的使用

本文介绍了在React中遇到点击事件触发函数时,由于`this`指向问题导致无法访问`state`的错误。通过分析项目结构,展示了在Home1.js中调用`getData()`函数时出现的`TypeError`。文章详细讲解了三种解决方案:1) 使用箭头函数;2) 在函数调用时改变`this`指向;3) 在构造函数中绑定`this`。此外,还提到了如何在带有参数的函数中正确使用这些方法,并提供了源码下载链接。
摘要由CSDN通过智能技术生成

项目结构:
在这里插入图片描述

定义一个函数getData() 点击按钮后调用函数
Home1.js 代码:

import React from 'react';

import '../assets/css/index.css';

/**
 * 定义函数
 */
class Home1 extends React.Component{
    // 子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象
    constructor(props){
        super(props);   //固定写法

        this.state={
            msg:'我是一个home组件',
            message:'我是一个message',
            username:'itying'
        }

    }
    // 定义一个函数
    getData(){
        // 执行这个 alert(this.state.name); 会报错
        // Uncaught TypeError: Cannot read property 'state' of undefined
        //原因是 this不是Home1 的当前对象
        //需要使用箭头函数改变this的指向
        alert(this.state.name);
    }

    render(){
        return(
            <div>
                <button onClick={this.getData}>调用方法</button>
            </div>
        )

    }
}
export default Home1;

但是在Home1.js 中 在函数 getData() 中 alert(this.state.name);报错
Uncaught TypeError: Cannot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值