React框架的点击事件(方式)

import React from 'react';
import "./assets/css/app.css"


class App extends React.Component {
    constructor() {
        super();
        this.state={
            isActive:false,
            left:50,
            top:100,
            amount:1
        };
        this.startX=0;
        this.startY=0;
    }
    click(val){
        alert(val);
    }
    //箭头函数
    clickes6=()=>{
        alert('点击事件箭头函数');
    }
    //鼠标放在上面
    mouseOver(){
        this.setState({isActive:true});
    }
    //鼠标移出
    mouseOut(){
        this.setState({isActive:false});
    }
    //鼠标移动
    mouseMove(e,move){
        console.log(e.pageX,e.pageY,move);
    }
    //移动端触摸
    touchStart(e){
        console.log(e.touches[0].pageX,e.touches[0].pageY);
        this.setState({isActive:false})
        this.startX=e.touches[0].pageX-this.state.left;
        this.startY=e.touches[0].pageY-this.state.top;
    }
    //移动端移动
    touchMove(e){
        console.log(e.touches[0].pageX,e.touches[0].pageY);
        this.setState({left:e.touches[0].pageX-this.startX,top:e.touches[0].pageY-this.startY});
    }
    //移动端抬起
    touchEnd(){
        this.setState({isActive:true})
    }
    changeAmount(e){
        console.log(e.target.value);
        //正则表达式限制格式(非数字过滤)
        let amount=e.target.value.replace(/[^\d]/g,'');
        if(amount==='' || amount==='0'){
            amount=1;
        }
        this.setState({amount:amount});
    }
    //render()
    render() {
        return (
            <div className="App">
                <button type="button" onClick={this.click.bind(this,'点击事件传参')}>点击事件</button>
                <button type="button" onClick={this.clickes6}>点击事件es6</button>
                <button type="button" onClick={()=>{this.click('点击事件方式二')}}>点击事件方式二</button>
                <div className={this.state.isActive?"box active":"box"}
                     onMouseOver={this.mouseOver.bind(this)}
                     onMouseOut={this.mouseOut.bind(this)}
                     onMouseMove={(e)=>{this.mouseMove(e,'move')}}
                     onTouchStart={(e)=>{this.touchStart(e)}}
                     onTouchMove={(e)=>{this.touchMove(e)}}
                     style={{left:this.state.left+'px',top:this.state.top+"px"}}
                     onTouchEnd={this.touchEnd.bind(this)}
                     ></div>
                <div>数量<input type="text" Value={this.state.amount}
                              onChange={(event)=>{this.changeAmount(event)}}/> <br/>
                              数量值:{this.state.amount}
                    </div>
            </div>
        )
    }
}

    export default App;

.box{width:100px;height: 100px;background-color: #0000FF;position: absolute;z-index:1;left:0;top:0}
.box.active{background-color: red}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值