• 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')
    )
  • 相关阅读:
    vue子父组件传值
    springboot后端controller参数接收
    mybatis-plus 相关
    整理 node-sass 安装失败的原因及解决办法
    vue组件name的作用小结
    关于npm audit fix
    Vue项目
    你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
    Eslint配置
    spring boot 资料整合
  • 原文地址:https://www.cnblogs.com/art-poet/p/12503948.html
Copyright © 2020-2023  润新知