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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 12:00:22
字體:
來源:轉載
供稿:網(wǎng)友

發(fā)現(xiàn)問題

我們在給一個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中傳遞的事件不是一個字符串,而是一個函數(shù)(如:onClick={this.handleClick}),此時onClick即是中間變量,所以處理函數(shù)中的this指向會丟失。解決這個問題就是給調用函數(shù)時bind(this),從而使得無論事件處理函數(shù)如何傳遞,this指向都是當前實例化對象。

解決

解決方案有4種

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

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 箭頭函數(shù) myfn = () =>{ console.log(this.refs.can) }

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

總結

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 杭锦旗| 永清县| 永年县| 永定县| 龙山县| 深水埗区| 贡山| 巴塘县| 台北县| 肃宁县| 泰宁县| 忻城县| 平远县| 泽普县| 筠连县| 嘉鱼县| 庆元县| 翁牛特旗| 和龙市| 沅江市| 微博| 伽师县| 铁岭市| 大埔县| 崇信县| 安国市| 涟水县| 邹城市| 开阳县| 珠海市| 醴陵市| 嘉鱼县| 朔州市| 塔城市| 扶绥县| 万荣县| 黑龙江省| 九江市| 孟村| 金湖县| 晋城|