国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 清河县| 东莞市| 安义县| 邯郸县| 凤台县| 武邑县| 晋城| 普宁市| 鲁甸县| 邵阳市| 和田市| 崇信县| 虞城县| 瑞昌市| 焉耆| 孝义市| 游戏| 太保市| 晴隆县| 罗山县| 高雄市| 富顺县| 中卫市| 阿拉尔市| 布尔津县| 揭阳市| 老河口市| 明星| 化隆| 塔城市| 镇雄县| 溧阳市| 河东区| 老河口市| 苗栗市| 汶上县| 乌兰察布市| 信宜市| 教育| 龙胜| 武功县|