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.pswp.cn/news/449696.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449696.shtml
英文地址,請注明出處:http://en.pswp.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;他們已經模擬出…