国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

React中this丟失的四種解決方法

2024-05-06 16:48:59
字體:
來源:轉載
供稿:網友

發現問題

我們在給一個dom元素綁定方法的時候,例如:

<input type="text" ref="myinput" accept = "image/*" onChange = {this.selectFile} />

React組件中不能獲取refs的值,頁面報錯提示:Uncaught TypeError: Cannot read property 'refs' of null or undefind

小栗子

import React from 'react';import $ from 'jquery'import '../app.scss';export default class MyForm extends React.Component { submitHandler (event) {  event.preventDefault();  console.log(this.refs.helloTo);  var helloTo = this.refs.helloTo.value;  alert(helloTo); } render () {  return (   <form onSubmit={this.submitHandler}>     <input ref='helloTo' type='text' defaultValue='Hello World! ' />     <button type='submit'>Speak</button>    </form>  ) }}

React中的bind同上方原理一致,在JSX中傳遞的事件不是一個字符串,而是一個函數(如:onClick={this.handleClick}),此時onClick即是中間變量,所以處理函數中的this指向會丟失。解決這個問題就是給調用函數時bind(this),從而使得無論事件處理函數如何傳遞,this指向都是當前實例化對象。

解決

解決方案有4種

1、在ES6中可以在構造函數中,直接將當前組件(或者叫類)的實例與函數綁定。

2、在方法調用的時候綁定this

如: <input type="file" ref="myinput" accept = "image/*" onChange = {this.selectFile.bind(this)} />

3、在方法編寫結尾的時候綁定this,bind(this)

如:

submitHandler(){ console.log(1)}.bind(this)

4、使用es6 箭頭函數 myfn = () =>{ console.log(this.refs.can) }

推薦使用箭頭函數,因為最近剛換到react 來,沒怎么看就直接cli 來懟,遇到一些小問題記錄于此

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 射洪县| 临西县| 沅江市| 伊川县| 岑巩县| 荣昌县| 宜丰县| 宜州市| 潞城市| 云霄县| 永兴县| 广德县| 龙海市| 泗水县| 安丘市| 崇仁县| 乌什县| 安塞县| 揭东县| 修水县| 玉田县| 乌审旗| 娱乐| 修水县| 江北区| 于田县| 土默特右旗| 东乡| 揭东县| 云阳县| 明溪县| 封丘县| 韶山市| 新野县| 嘉祥县| 阿克陶县| 衡山县| 雅安市| 岑巩县| 师宗县| 垦利县|