之前的文章我们介绍了  React 绑定属性( 绑定class  绑定style)、引入图片  循环数组渲染数据。接下来我们将介绍 React 事件,方法, React定义方法的几种方式 获取数据 改变数据 执行方法传值。

 import React, {Component} from 'react';

 class Home extends Component {
constructor(props) {
super(props);
this.state = {
name: "zhangsan",
}; this.getData2 = this.getData2.bind(this);
} getData1() {
console.log(this.state.name)
} getData2() {
console.log(this.state.name)
} getData3 = () => {
console.log(this.state.name)
} setData = (name) => {
this.setState({
name: name
})
} render() {
return (
<div>
<p>Hello {this.state.name}</p> <button onClick={this.getData1.bind(this)}>获取数据1</button>
<button onClick={this.getData2}>获取数据2</button>
<button onClick={this.getData3}>获取数据3</button>
<button onClick={this.setData.bind(this, "lisi")}>改变数据</button>
</div>
);
}
} export default Home;

React 上绑定方法共有三种方法:

首先我们在 onClick 点击时间中直接绑定 this.getData 方法的时候如果写成 this.getData( ) 的话会直接调用该方法,所以不能写 ( ),

在不写 () 的情况下,后点击运行 getDate 方法获取 this.state 里面的数据会报错,这是因为this指向发生了变化。绑定 this 指向有一下方法:

1、this.getData1.bind(this),在该方法后面直接写 .bind(this),在运行 getData1 方法的时候 this 指向不会发生变化。

2、this.getData2 = this.getData2.bind(this),在 constructor 构造函数中直接将 getData2 方法绑定上 this.

3、this.getData ,然后在调用该方法的时候 getData3 = () => { },运用箭头函数的方法直接将 this 指向上下文。

在实际开发应用中我们建议使用第三种方法。

在方法中传值需要使用 this.setData.bind(this, 值) 的方法,第一个参数为 this,第二个参数为要传的值。

在方法中要改变 this.state 中的数据时需要使用 this.setState({ 要改变的数据变量名:更改的数据 }) 的方法。

最后运行结果如下:

React 从入门到进阶之路(四)的更多相关文章

  1. React 从入门到进阶之路(九)

    之前的文章我们介绍了 React propTypes  defaultProps.接下来我们将介绍 React 生命周期函数. 之前我们已经根据 create-react-app 模块创建了一个 Re ...

  2. React 从入门到进阶之路(三)

    之前的文章我们介绍了 React 创建组件.JSX 语法.绑定数据和绑定对象.接下来我们将介绍 React 绑定属性( 绑定class  绑定style).引入图片  循环数组渲染数据. 上一篇中我们 ...

  3. React 从入门到进阶之路(五)

    之前的文章我们介绍了  React 事件,方法, React定义方法的几种方式 获取数据 改变数据 执行方法传值.接下来我们将介绍 React 表单事件 键盘事件 事件对象以及 React中 的 re ...

  4. React 从入门到进阶之路(七)

    之前的文章我们介绍了 React 表单详解 约束性和非约束性组件 input text checkbox radio  select  textarea  以及获取表单的内容.接下来我们将介绍 Rea ...

  5. React 从入门到进阶之路(六)

    之前的文章我们介绍了 React 表单事件 键盘事件 事件对象以及 React中 的 ref 获取 dom 节点 .双向数据绑定.接下来我们将介绍 React 表单详解 约束性和非约束性组件 inpu ...

  6. React 从入门到进阶之路(八)

    之前的文章我们介绍了 React中的组件.父子组件.React props父组件给子组件传值.子组件给父组件传值.父组件中通过refs获取子组件属性和方法.接下来我们将介绍 React propTyp ...

  7. React 从入门到进阶之路(二)

    在之前的文章中我们介绍了 React 开发的环境搭建及目录介绍和整理,本篇文章将介绍 React 创建组件.JSX 语法.绑定数据和绑定对象. 之前我们已经将项目运行了起来,我们再来看一下目录结构: ...

  8. React 从入门到进阶之路(一)

    在开始 React 学习之前我们先进入官网 https://react.docschina.org/ 看看官方对 React 的解释:React 是用于构建用户界面的JavaScript 库.我们只需 ...

  9. Python 爬虫从入门到进阶之路(十四)

    之前的文章我们已经可以根据 re 模块,Xpath 模块和 BeautifulSoup4 模块来爬取网站上我们想要的数据并且存储在本地,但是我们并没有对存储数据的格式有要求,本章我们就来看数据的存储格 ...

随机推荐

  1. node.js+express+jade系列三:404错误的配置

    1:新建一个404.jade 2:在app.js后面配置如下代码 app.use(function(req, res){        res.render("404", {sta ...

  2. Mybatis异常_04_mapper.xml中不能使用小于号<、大于号>

    一.解决方法: 1.< 2.<![CDATA[ < ]]> 将小于号替换为上述代码即可. 二.参考资料 1.mybatis配置中sql莫名其妙报错,多半是条件中小于符号捣的鬼

  3. hihocoder -1283 hiho密码(水题)

      时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho根据最近在密码学课上学习到的知识,开发出了一款hiho密码,这款密码的秘钥是这样生成的:对于一种有N个字母的语言 ...

  4. C++如何拒绝编译器自动生成的函数

    每一个class,编译器都会自动生成四个特殊成员函数: destructor(析构函数) default constructor(默认构造函数) copy constructor(copy构造函数) ...

  5. [: xxxx: Unexpected operator

    /*************************************************************************** * [: xxxx: Unexpected o ...

  6. Mybatis学习--Mapper XML文件

    学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#insert_update_and_delete My ...

  7. freeMarker(一)——freeMarker简介

    学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net FreeMarker简介: FreeMarker 是一款 模板引擎: ...

  8. Linux下几种RTP协议实现的比较和JRTPLIB编程讲解

    流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议. IP电话等应用场合的技术基础.RTP是进行实时流媒体传输的标准协议和关 ...

  9. BZOJ5324 JXOI2018 守卫

    传送门 这是我见过的为数不多的良心九怜题之一 题目大意 给定一段$n$个点构成的折线,第$i$个折点的坐标是$(i,h_i)$,你可以在$i$点放置一个视野,定义$i$能看到$j$当且仅当$i$处有视 ...

  10. bzoj1014火星人

    ...强迫症终于A了这道题  bzoj前30道全A指日可待 splay维护这个结点控制的字符串的hash值 每次旋转重新算一遍就可以了 查询的时候跑一个二分 讲起来很简单但是还是调了1h才调对了spl ...