04.React事件 方法、 React定义方法的几种方式 获取数据 改变数据 执行方法传值...

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一.基本用法

在以类继承的方式定义的组件中,为了能方便地调用当前组件的其他成员方法或属性(如:this.state),通常需要将事件处理函数运行时的 this 指向当前组件实例。

绑定事件处理函数this的几种方法:

第一种方法:

      run(){alert(this.state.name)}

renturn中

不能直接写this.run(this)这样写代表执行该方法需要写bind。

应为this.run.bind(this)

      <button onClick={this.run.bind(this)}>按钮</button>

第二种方法:


    构造函数中改变

    this.run = this.run.bind(this);

 

     run(){alert(this.state.name)}

return中写

     <button onClick={this.run>按钮</button>

第三种方法:

     run=()=> {alert(this.state.name)}

renturn中写

    <button onClick={this.run>按钮</button>


二.注意事项    

注意this指向

方法中不能写this.state.msg

  • 可以改变this的指向方法,在onclick调用的时候,将this传递进去。
  • 通过构造函数改变
  • 通过箭头函数改变(最常用)

三.改变state值

通过改变this指向直接改变

在return中直接写小括号,小括号,代表执行。

应这样传值this.setName.bind(this,'张三')

参考代码

import React from 'react';import '../assets/css/index.css';class Home extends React.Component{// 子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象constructor(props){super(props);   //固定写法this.state={msg:'我是一个home组件',message:'我是一个message',username:'itying'}   //第二种改变this指向的方法this.getMessage= this.getMessage.bind(this);}run(){alert('我是一个run方法')}getData(){alert(this.state.msg);}getMessage(){alert(this.state.message);}getName=()=>{alert(this.state.username);}//第三种改变this指向的方法setData=()=>{//改变state的值this.setState({msg:"我是一个home组件 这是改变后的值"})}setName=(str)=>{//改变state的值this.setState({username:str})}render(){return(<div><h2>{this.state.msg}</h2>    <h2>{this.state.username}</h2>     <button onClick={this.run}>执行方法</button><br /><br /><button onClick={this.getData.bind(this)}>获取数据--第一种改变this指向的方法</button><br /><br /><button onClick={this.getMessage}>获取数据--第二种改变this指向的方法</button><br /><br /><button onClick={this.getName}>获取数据--第三种改变this指向的方法</button><br /><br /><button onClick={this.setData}>改变state里面的值</button><br /><br /><button onClick={this.setName.bind(this,'张三')}>执行方法传值</button>{/* <button onClick={this.setName.bind(this,'张三','李四')}>执行方法传值</button> */}</div>)}    
}
export default Home;

转载于:https://my.oschina.net/glorylion/blog/3000891

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码之美——Doom3源代码赏析

摘要&#xff1a;Dyad作者、资深C工程师Shawn McGrathz在空闲时翻看了Doom3的源代码&#xff0c;发出了这样的惊叹&#xff1a;“这是我见过的最整洁、最优美的代码&#xff01;”“Doom 3的源代码让我对那些优秀的程序员刮目相看。”因此有了本文。 背景介绍&#xff1a; Doom…

UDP:用户数据报协议 是什么

用户数据报协议&#xff08;英语&#xff1a;User Datagram Protocol&#xff0c;缩写为UDP&#xff09;&#xff0c;又称用户数据报文协议&#xff0c;是一个简单的面向数据报的传输层协议&#xff0c;正式规范为RFC 768。在TCP/IP模型中&#xff0c;UDP为网络层以上和应用层以…

随想录(程序员和收入)

距离上一次写博客已经很长时间了&#xff0c;大约过了三个星期。这三个星期发生了很多事情&#xff0c;这中间也有我自己的思考积累&#xff0c;也有工作上的变故。总之&#xff0c;自己想了很多&#xff0c;也得到了很多。每到这个时候&#xff0c;毕业生朋友们都在寻找工作&a…

iOS进阶之正则表达式

最近一直在弄正则表达式&#xff0c;于是在这里整理一下&#xff0c;便于日后查阅。 1、常用符号 ^&#xff1a;字符串的开始$&#xff1a;字符串的结束*&#xff1a;表示零个或若干个?&#xff1a;表示零个或一个&#xff1a;表示一个或若干个| &#xff1a;表示 或 操作. &a…

akshare分析涨停板股票数据

导入包&#xff0c;获取日期数据 import pandas as pd import numpy as np import akshare as ak #画图 import matplotlib.pyplot as plt #正确显示中文和负号 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False #处理时间 from dateutil.parser…

DNS(域名系统) 是什么

域名系统&#xff08;英文&#xff1a;Domain Name System&#xff0c;缩写&#xff1a;DNS&#xff09;是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。 DNS使用TCP和UDP端口53。当前&#xff0c;对于每一级域…

《The Art of Readable Code》学习笔记(一)

放寒假回家有些颓废&#xff0c;就是不想看书。但是已经大三了&#xff0c;春节过后就要找实习了。哎&#xff0c;快乐的大学生活终于要过去了。 先从简单的书看起吧&#xff01;在图书馆借了本《The Art of Readable Code》&#xff0c;就是教你咋写好优雅的代码的&#xff0c…

文件基本处理

1 打开文件&#xff0c;将文件句柄赋值给一个变量 2 拿句柄对文件进行操作 3 关闭文件 将一个文件第一行写道另外一个文件 f open("test","r",encoding"utf-8") # open找的是系统的编码 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream详细用法

ofstream是从内存到硬盘&#xff0c;ifstream是从硬盘到内存&#xff0c;其实所谓的流缓冲就是内存空间; 在C中&#xff0c;有一个stream这个类&#xff0c;所有的I/O都以这个“流”类为基础的&#xff0c;包括我们要认识的文件I/O&#xff0c;stream这个类有两个重要的运算符&…

如何将JAR包发布到Maven中央仓库?

将jar包发布到Maven中央仓库(Maven Central Repository)&#xff0c;这样所有的Java开发者都可以使用Maven直接导入依赖&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL与HTTPS

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 关于加密 在解释SSH、SSL与HTTPS协议之前我先介绍一下非对称加密协议。在1976年以前&#xff0c;所有的加密都采用对称加密&#xff0c…

北向资金运作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#获取交易日历 import datetime def get_cal_date(start,end):dates ak.to…

网络性能测试工具iperf详细使用图文教程【转载】

原文&#xff1a;https://www.cnblogs.com/yingsong/p/5682080.html 转载于:https://www.cnblogs.com/luo30zhao/p/10512042.html

代码审查:程序员内炼之道

摘要&#xff1a;“关注并弄清楚桥梁修建细节&#xff0c;否则你建起来的桥梁有可能坍塌。”代码审查更重要的是一种技术分享或者代码共享。程序员如何提升自我修炼之道&#xff0c;欢迎来支招。 代码审查更重要的是一种技术分享或者代码共享。在审查过程中&#xff0c;通过被…

扎实的基础是成功的法宝

转载链接&#xff1a;https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基础是好成绩的根本,无论做任何事情,基本功的训练是成功的前提:“还没有学会走,就想学跑,那不行,肯定会摔跟头。”这是成功人士的经验之谈。要建成高楼大厦,地基必须打好。…

发送qq邮件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 写成了一个通用的函数接口&#xff0c;想直接用的话&#xff0c;把参数…

排序代码(python,c++) 及 基本算法复杂度

0.导语 本节为手撕代码系列之第一弹&#xff0c;主要来手撕排序算法&#xff0c;主要包括以下几大排序算法&#xff1a; 直接插入排序 冒泡排序 选择排序 快速排序 希尔排序 堆排序 归并排序 1.直接插入排序 【算法思想】 每一步将一个待排序的记录&#xff0c;插入到前面…

TCP/IP四层模型与OSI参考模型

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 TCP/IP四层模型&#xff1a; 1.链路层&#xff08;数据链路层/网络接口层&#xff09;&#xff1a;包括操作系统中的设备驱动程序、计算…

Metal日记:使用步骤指南

本文参考资料&#xff1a; juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal处理逻辑 无论是CoreImage、GPUImage框架&…

还驾驭不了4核? 别人已模拟出百万核心上的并行

摘要&#xff1a;不管是台式机还是笔记本&#xff0c;四核双核都已经不是新鲜的事了。计算机领域的你可能已经认识到了给电脑选配4核的处理器完全是一种浪费&#xff0c;因为大多数的程序都不支持多核心的并行处理。然而斯坦福的计算机科学家最近公布&#xff0c;他们已经模拟出…