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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:41:45
字體:
來源:轉載
供稿:網友

發現問題

我們在給一個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 來懟,遇到一些小問題記錄于此

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 镇赉县| 永清县| 郴州市| 重庆市| 太和县| 宣武区| 锡林浩特市| 松滋市| 新昌县| 敦煌市| 博客| 泰和县| 夏邑县| 修武县| 松溪县| 阿尔山市| 贡觉县| 平和县| 阜康市| 沙田区| 新疆| 旬阳县| 会理县| 怀仁县| 翁牛特旗| 兴国县| 大理市| 新和县| 镇沅| 民和| 阜南县| 霸州市| 辉南县| 河西区| 文山县| 东光县| 鄂托克旗| 鄂伦春自治旗| 宁武县| 阳曲县| 密山市|