前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

React之事件(四)

首页2017-11-19 10:13:32Front-End
JavaScriptReact

# 一、编写事件处理函数

  • 在函数体中进行一些操作,常见的有:更新页面内容,更新组件状态,与后台交互

书写方式

var Demo = React.createClass({
		getInitialState:function(){		},
		handleClick: function(event){		},
		handleChange: function(){		},
		render:function(){		},
	})
@前端进阶之旅: 代码已经复制到剪贴板
  • 上面的代码中有的有参数event,有的没有,这个根据自己的需求

# 二、绑定事件处理函数

  • onClick={this,handleClick}
  • 需要注意的是:不要在事件后面添加上一个()

其他的事件

  • 触摸事件:onTouchCancel,onTouchEnd,onTouchMove,onTouchStart
  • 键盘事件:onKeyDown,onKeyUp, onKeyPress(前两者的组合)
  • 表单时间:onChange,onInput,onSubmit
  • 焦点事件:onFocus,onBlur
  • UI元素事件:onScroll
  • 滚动事件:onWhell(鼠标滚动)
  • 鼠标事件:onClick,onContextMenu,onDoubleClick……
var Demo = React.createClass({
    handleClick:function(e){
        console.log(e)
        console.log(e.target)
        console.log(e.nativeEvent)
    },
    render:function(){
        return <div onClick={this.handleClick}>Hello World</div>
    }
})
ReactDOM.render(<Demo/>,document.getElementById('app'))
@前端进阶之旅: 代码已经复制到剪贴板
var Demo = React.createClass({
    getInitialState:function(){
        return {
            width: 200,
            height: 200,
            backgroundColor: '#DDDDDD'
        }
    },
    /*handleWheel:function(e){
        var newColor = (parseInt(this.state.backgroundColor.substr(1),16) + e.deltaY).toString(16)
        newColor = '#' + newColor.toUpperCase()
        console.log(newColor)
        this.setState({
            backgroundColor:newColor
        })
    },*/
    randomColor:function(){
        var r = Math.floor(Math.random()*256);
        var g = Math.floor(Math.random()*256);
        var b = Math.floor(Math.random()*256);
        return 'rgb('+r+','+g+','+b+')'
    },
    handleWheel:function(){
        this.setState({
            backgroundColor:this.randomColor()
        })
    },
    render:function(){
        return <div onWheel={this.handleWheel} style={this.state}>这是一个案例,鼠标滚动实现背景颜色的变化</div>
    }
})
ReactDOM.render(<Demo/>,document.getElementById('app'))
@前端进阶之旅: 代码已经复制到剪贴板

# 三、事件对象

事件对象的使用

  • 通用:所有的事件都有事件属性

  • 键盘:键盘事件拥有的事件属性

  • 鼠标:鼠标事件拥有的事件属性

  • 滚动:滚动事件拥有的事件属性
    • 为什么会有三个,因为有的设备可以实现三个方向的移动

# 四、事件与状态关联

inputChange:function(event){
    this.setState({
    	inputText:event.target.value
    })
}
@前端进阶之旅: 代码已经复制到剪贴板
  • 总的来说就是使用this.setState来更新状态,而状态的值因为事件的不同会不同
fe
  • 一、编写事件处理函数
  • 二、绑定事件处理函数
  • 三、事件对象
  • 四、事件与状态关联

← React之组件的协同及(不)可控组件(五)React之组件的生命周期以及属性状态(三) →