当前位置: 首页 > news >正文

wordpress建站linux/线上营销平台

wordpress建站linux,线上营销平台,建境模型公司官网,网站建设培训目标目录 为什么要做事件绑定 获取事件对象 事件处理-this指向问题 事件处理-this指向解决方案 为什么要做事件绑定 让页面有交互&#xff1b; 修改数据以更新视图 格式 <元素 事件名1{ 事件处理函数1 } 事件名2{ 事件处理函数2 } ></元素> 注意&#xff1a;Rea…

目录

为什么要做事件绑定

获取事件对象

事件处理-this指向问题

事件处理-this指向解决方案


为什么要做事件绑定

让页面有交互; 修改数据以更新视图

格式

<元素 事件名1={ 事件处理函数1 } 事件名2={ 事件处理函数2 }  ></元素>

 注意:React 事件名采用驼峰命名法,比如:onMouseEnter、onFocus、 onClick .....

示例

import React from 'react'
import ReactDOM from 'react-dom'const title = <h1>react中的事件</h1>export default class Hello extends React.Component {fn() {console.log('mouseEnter事件')}render() {return (<divonClick={() => console.log('click事件')}onMouseEnter={this.fn}能处理鼠标进入或者点击事件</div>)}
}const content = (<div>{title}{<Hello />}</div>
)ReactDOM.render(content, document.getElementById('root'))

注意:

  1. 事件名是小驼峰命名格式

  2. 在类中补充方法

  3. this.fn不要加括号:

    • onClick={ this.fn() } 先调用fn(),然后将fn的执行结果当做click事件的处理函数

别忘记了写this

获取事件对象

react中,通过事件处理函数的形参来获取。

示例

 handleClick(e)=> {e.preventDefault()console.log('单击事件触发了', e)}render() {return (<div><button onClick={(e)=>{console.log('按钮点击了', e)}}>按钮</button><a href="http://itcast.cn/" onClick={this.handleClick}>武汉黑马</a></div>)  }
}

事件处理-this指向问题

问题导入

class App extends React.Component {state = {msg: 'hello react'}handleClick() {console.log(this) // 这里的this是  undefined}render() {console.log(this) // 这里的this是 Appreturn (<div><button onClick={this.handleClick}>点我</button></div>)}
}

分析原因

  • 事件处理程序的函数式函数 (普通函数) 调用模式,在严格模式下,this指向undefined

  • render函数是被组件实例调用的,因此render函数中的this指向当前组件

class Person(name) {constructor(){this.name = name}say() {console.log(this)}
}
let p1 = new Person('小花')
p1.say()                      //p1
const t = p1.say
t()                           // undefined

 总结

  1. class的内部,开启了局部严格模式use strict,所以this不会指向window undefined

  2. onClick={this.fn}中,this.fn的调用并不是通过类的实例调用的,所以值是undefined

事件处理-this指向解决方案

解决事件处理程序中this指向问题主要有三种方式

  1. Function.prototype.bind()

class App extends React.Component {state = {msg: 'hello react'}handleClick() {console.log(this.state.msg)}render() {return (<div><button onClick={this.handleClick.bind(this)}>点我</button></div>)}
}

  2. 箭头函数

class App extends React.Component {state = {msg: 'hello react'}handleClick() {console.log(this.state.msg)}render() {return (<div><button onClick={() => {this.handleClick()}}>点我</button></div>)}
}

 缺点:需要额外包裹一个箭头函数,影响性能, 结构不美观

3. class 的实例方法【推荐】  

class App extends React.Component {state = {msg: 'hello react'}handleClick = () => {console.log(this.state.msg)}render() {return (<div><button onClick={this.handleClick}>点我</button></div>)}
}

注意:这个语法是试验性的语法,但是有babel的转义,所以没有任何问题

http://www.lbrq.cn/news/1285183.html

相关文章:

  • 企业网站需求文档/站长工具之家
  • 做网站需要编程?/如何制作网址链接
  • 佛山专业的做网站的/seo怎么刷关键词排名
  • 做网站什么商品好/软文是指什么
  • 地图网站开发/网站维护需要多长时间
  • 商丘疫情/西安网络优化培训机构公司
  • 网站建设毕业报告/seo优化软件哪个好
  • 低价网站建设机构/娃哈哈软文推广
  • 温州国资委网站建设/成长电影在线观看免费
  • wordpress固定链接发布失败/深圳宝安seo外包
  • 长沙培训网站建设/武汉seo网站优化
  • 漂亮产品网站/营销软文写作
  • 河北邯郸封闭最新消息/常熟seo网站优化软件
  • 微官网和公众号的区别/汕头seo网络推广服务
  • 做网站需要买什么东西/网站互联网推广
  • 海北wap网站建设/创建网址快捷方式
  • 网站图片是用什么软件做的/黑龙江头条今日新闻
  • 网站怎么做才可以做评价/磁力猫最佳搜索引擎入口
  • 怎样做理财投资网站/百度销售平台怎样联系
  • 网站备案幕布照规范/网络营销以什么为中心
  • 返回邢台最新规定/seo教学网seo
  • 17一起做网站zwd.com/成都网站seo收费标准
  • 织梦网站做中英文双语言版本/长春seo招聘
  • 基层人武部正规化建设/北京seo培训机构
  • 西安专业网站开发哪家好/软文推广去哪个平台好
  • 阿里免费做网站/公司培训课程有哪些
  • 城乡建设与管理委员会网站/短视频seo厂家
  • 网站必须做公安部备案/什么是关键词
  • 网站建设费用 百度文库/一个平台怎么推广
  • 手机微信官方网站/seo营销网站的设计标准
  • C语言中:形参与实参的那些事
  • LeetCode 854:相似度为 K 的字符串
  • TCP如何解决网络切换问题
  • C#其他知识点
  • “三十二应身”架构设计:论高扩展性度化系统的实现原理
  • 疯狂星期四第19天运营日记