react 绑定事件得方法和改变state得值

首先创建react组件

class Home extends React.Component{

    // 子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象

    constructor(props){
        super(props);   //固定写法

        this.state={

            msg:'我是一个home组件',

            message:'我是一个message',

            username:'itying'
           
        }   

        //第二种改变this指向的方法

        this.getMessage= this.getMessage.bind(this);

    }
    // run方法
    run(){
        alert('我是一个run方法')
        
    }
       // 注意this指向此时方法中的this是指向改函数而不是指向这个组件 所以需要改变this
       // 方法1   <button onClick={this.getData.bind(this)}>获取数据--第一种改变this指向的方法</button>
       // 也就是在调用时改变
       // 方法2 :在constructor 中使用bind改变this
       // 方法3 就是es6得箭头函数
    getData(){

        alert(this.state.msg);
    }


    getMessage(){

        alert(this.state.message);
    }

    getName=()=>{

        alert(this.state.username);
    }



    //第三种改变this指向的方法
    setData=()=>{

        //改变state的值

        this.setState({

            msg:"我是一个home组件 这是改变后的值"
        })

    }

    setName=(str)=>{

        //改变state的值
        // 注意此函数内this得指向时指向改函数所以调用方法时需要改变this
        //   <button onClick={this.setName.bind(this,'张三')}>执行方法传值</button>

        this.setState({

            username:str
        })

    }

    render(){
        return(
            <div>
                <h2>{this.state.msg}</h2>    
                 <h2>{this.state.username}</h2>     

             // 在这里执行run方法 需要注意run后无括号如果又括号代表方法得直接执行
                <button onClick={this.run}>执行方法</button>

                <br />
                <br />
                
                <button onClick={this.getData.bind(this)}>获取数据--第一种改变this指向的方法</button>

                <br />
                <br />

                 <button onClick={this.getMessage}>获取数据--第二种改变this指向的方法</button>


                <br />
                <br />

                 <button onClick={this.getName}>获取数据--第三种改变this指向的方法</button>


                 <br />
                <br />

                 <button onClick={this.setData}>改变state里面的值</button>



               <br />
                <br />

                 <button onClick={this.setName.bind(this,'张三')}>执行方法传值</button>



               { <button onClick={this.setName.bind(this,'张三','李四')}>执行方法传值</button> }


                            
            </div>
        )

    }    
}
export default Home;
改变state得值 react要改变状态必须用this.setState()上面第三种改变this指向得箭头函数方法 就是一个改变state值得方法 同时注意this问题请看setName方法得备注!

谢谢大家!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值