zoukankan      html  css  js  c++  java
  • React 事件中 this 的三种使用方式

    1.bind绑定的方法、

    不传参

    class Hello extends React.Component{
        constructor(){
            super()
            this.state = {
                content:true
            }
            this.change = this.change.bind(this)
        }
        
        change(){
            this.setState({
                content:!this.state.content
            })
        }
    
        render(){
            return (
                <div>
                    <h1>{this.state.content ? '1':'2'}</h1>
                    <h2>{this.props.name}</h2>
                    <button onClick={this.change}>
                        点击
                    </button>
                </div>
            )
        }
    }
    
    ReactDOM.render(
        <Hello name="Hello"/>,
        document.getElementById('example')
    )

    传参

    class Hello extends React.Component{
        constructor(){
            super()
            this.state = {
                content:true
            }
            this.change = this.change.bind(this,this.state.content)
        }
        
        change(obj){
            this.setState({
                content:!this.state.content
            })
            console.log(obj)
            console.log(this.state.content)
        }
    
        render(){
            return (
                <div>
                    <h1>{this.state.content ? '1':'2'}</h1>
                    <h2>{this.props.name}</h2>
                    <button onClick={this.change}>
                        点击
                    </button>
                </div>
            )
        }
    }
    
    ReactDOM.render(
        <Hello name="Hello"/>,
        document.getElementById('example')
    )

    2.属性初始化器的方式

    不传参

    class Hello extends React.Component{
        constructor(){
            super()
            this.state = {
                content:true
            }
        }
        
        change=()=>{
            this.setState({
                content:!this.state.content
            })
        }
    
        render(){
            return (
                <div>
                    <h1>{this.state.content ? '1':'2'}</h1>
                    <h2>{this.props.name}</h2>
                    <button onClick={this.change}>
                        点击
                    </button>
                </div>
            )
        }
    }
    
    ReactDOM.render(
        <Hello name="Hello"/>,
        document.getElementById('example')
    )

    传参

    class Hello extends React.Component{
        constructor(){
            super()
            this.state = {
                content:true
            }
        }
        
        change=obj=>{
            this.setState({
                content:!this.state.content
            })
            console.log(obj)
        }
    
        render(){
            return (
                <div>
                    <h1>{this.state.content ? '1':'2'}</h1>
                    <h2>{this.props.name}</h2>
                    <button onClick={this.change(this.state.content)}>
                        点击
                    </button>
                </div>
            )
        }
    }
    
    ReactDOM.render(
        <Hello name="Hello"/>,
        document.getElementById('example')
    )

    3.回调函数的方式

    不传参

    class Hello extends React.Component{
        constructor(){
            super()
            this.state = {
                content:true
            }
        }
        
        change(){
            this.setState({
                content:!this.state.content
            })
        }
    
        render(){
            return (
                <div>
                    <h1>{this.state.content ? '1':'2'}</h1>
                    <h2>{this.props.name}</h2>
                    <button onClick={()=>{this.change()}}>
                        点击
                    </button>
                </div>
            )
        }
    }
    
    ReactDOM.render(
        <Hello name="Hello"/>,
        document.getElementById('example')
    )

    传参

    class Hello extends React.Component{
        constructor(){
            super()
            this.state = {
                content:true
            }
        }
        
        change(obj){
            this.setState({
                content:!this.state.content
            })
            console.log(obj)
        }
    
        render(){
            return (
                <div>
                    <h1>{this.state.content ? '1':'2'}</h1>
                    <h2>{this.props.name}</h2>
                    <button onClick={()=>{this.change(this.state.content)}}>
                        点击
                    </button>
                </div>
            )
        }
    }
    
    ReactDOM.render(
        <Hello name="Hello"/>,
        document.getElementById('example')
    )
  • 相关阅读:
    蓝鸥0c考试 绝密
    省市县用对象实现
    省市区用字典实现
    3道比较有用的oc练习题
    ios 开发 OC编程 类的扩展 协议 延展和 类目
    ios 开发 OC编程 内存管理
    ios 开发 OC编程 块语法bolck的一些应用
    ios 开发 OC编程 块语法bolck
    中等难度的通讯录.字典 动态分组法
    TestFlight
  • 原文地址:https://www.cnblogs.com/art-poet/p/12503948.html
Copyright © 2011-2022 走看看