zoukankan      html  css  js  c++  java
  • React(5) --绑定函数事件

    绑定函数事件

    在以类继承的方式定义的组件中,为了能方便地调用当前组件的其他成员方法或属性(如:this.state),通常需要将事件处理函数运行时的 this 指向当前组件实例。

    run(){
        alert('我是一个run方法')
    }

    <button onClick={this.run}>执行方法</button> 

    //方法不需要加(),加了(),一旦页面加载进来就执行了 

    绑定事件处理函数this的几种方法:

    方法1:

    run(){
         alert(this.state.name)
    }
    <button onClick={this.run.bind(this)}>按钮</button>  //不绑定this的话,上面的方法里面的this就指向不了,拿不到数据

    方法2:

    constructor(props){
            super(props);   //固定写法
            this.state={
                name:'我是一个home组件' 
            }   
            //构造函数中改变
            this.run = this.run.bind(this);
      }
    
    run(){
            alert(this.state.name)
    }
    <button onClick={this.run}>按钮</button>

    方法3:

    //直接使用箭头函数 
    run=()=> { alert(this.state.name) } <button onClick={this.run}>按钮</button>

    函数方法里传值,改变state的值

    setName=(str)=>{
          //改变state的值
          this.setState({
              username:str
          })
    }
    <button onClick={this.setName.bind(this,'张三')}>执行方法传值</button>
    
    <button onClick={this.setName.bind(this,'张三','李四')}>执行方法传值</button> 

     获取dom节点方法

    方法1:

    run=(event)=> {
            //alert(event.target)  //获取执行事件的dom节点
    //alert(event.target.getAttribute('aid')) //获取dom的属性
    event.target.style.background='red'; }
    <button aid="123" onClick={this.run}>按钮</button>

     方法2:

    import React from 'react';
    
    class List extends React.Component {
        constructor(props) {
            super(props);
            this.state = { 
                username:''
             };
        }
        inputChange=()=>{
            /*
                获取dom节点
                    1、给元素定义ref属性
                        <input ref="username" />
                    2、通过this.refs.username 获取dom节点
            
            */
            let val=this.refs.username.value;
            this.setState({
                username:val
            })
        }
        getInput=()=>{
            alert(this.state.username);
        }
        //键盘事件
        inputKeyUp=(e)=>{
            console.log(e.keyCode);
            if(e.keyCode==13){
                alert(e.target.value);
            }
        }
        inputonKeyDown=(e)=>{
            console.log(e.keyCode);
            if(e.keyCode==13){
                alert(e.target.value);
            }
        }
        render() {
            return (
                <div>  
                      {/* 获取表单的值
    
                    1、监听表单的改变事件                        onChange
                    2、在改变的事件里面获取表单输入的值            ref获取 
                    3、把表单输入的值赋值给username              this.setState({})
                    4、点击按钮的时候获取 state里面的username     this.state.username
                     */}
                    <input ref="username" onChange={this.inputChange}/> <button onClick={this.getInput}>获取input的值</button>
                    <br /><br /> <hr />  
                    <h2>键盘事件</h2>
                    <input onKeyUp={this.inputKeyUp}/>
                    <br /><br />
                    <input onKeyDown={this.inputonKeyDown}/>
                </div>
            );
        }
    }
    
    export default List;
  • 相关阅读:
    显示所有销售订单
    从 “香农熵” 到 “告警降噪” ,如何提升告警精度?
    KubeDL 0.4.0 Kubernetes AI 模型版本管理与追踪
    链路分析 K.O “五大经典问题”
    让容器跑得更快:CPU Burst 技术实践
    All in one:如何搭建端到端可观测体系
    【视频特辑】提效神器!如何用Quick BI高效配置员工的用数权限
    一文说清linux system load
    Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS
    实时数仓Hologres首次走进阿里淘特双11
  • 原文地址:https://www.cnblogs.com/juewuzhe/p/10090783.html
Copyright © 2011-2022 走看看