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;

 

posted @ 2018-12-09 12:42  童话里都是骗人的  阅读(812)  评论(0编辑  收藏  举报