zoukankan      html  css  js  c++  java
  • react绑定this三种方式

    在pages下新增this.js文件并修改route/index.js如下

    this.js

    import React from 'react';
    
    export default class This extends React.Component{
        constructor(){
            super();
            this.state = {
                value: ''
            };
    
            this.changeValue1 = this.changeValue1.bind(this);
        }
    
        changeValue1(){
            this.setState({
                value: 'changeValue1'
            });
        }
    
        changeValue2 = () => {
            this.setState({
                value: 'changeValue2'
            });
        };
    
        changeValue3(){
            this.setState({
                value: 'changeValue3'
            });
        }
    
    
        render(){
            return (
                <div>
                    <p onClick={this.changeValue1}>this1</p>
                    <p onClick={this.changeValue2}>this2</p>
                    <p onClick={this.changeValue3.bind(this)}>this3</p>
                    <p>{this.state.value}</p>
                </div>
            )
        }
    }

    route/index.js

    import React from 'react';
    import {Switch, Route} from "react-router-dom";
    
    import Home2 from '../pages/Home2';
    import OnePage from '../pages/OnePage';
    import TwoPage from '../pages/TwoPage';
    import This from '../pages/This';
    
    const Routers = (
        <Switch>
            <Route path="/" exact component={Home2} />
            <Route path="/onePage" component={OnePage} />
            <Route path="/twoPage/:id" component={TwoPage} />
            <Route path="/this" component={This} />
        </Switch>
    );
    
    export default Routers

    第一种绑定this方式是bind(this) 

    第二种使用ES6的箭头函数

    第三种方式好像和第一种一样?其实如果要加参数的话我更推荐第三种,因为:

    <p onClick={this.changeValue3.bind(this, 666)}>this3</p>  
    changeValue3(id){
        this.setState({
            value: 'changeValue3'
        });
        this.props.history.push(`/twoPage/${id}`)
    }
    添加参数id为666并补上上一篇提到的js带参数跳转路由的方法;

  • 相关阅读:
    WINFORM如何禁止调整窗体大小
    C#发布程序添加其他程序文件
    C#发布程序添加其他程序文件
    C# AES加密解密
    C# AES加密解密
    C# winform combobox控件中子项加删除按钮
    C# winform combobox控件中子项加删除按钮
    1017:浮点型数据类型存储空间大小
    1017:浮点型数据类型存储空间大小
    1016:整型数据类型存储空间大小
  • 原文地址:https://www.cnblogs.com/huangjie2018/p/10690471.html
Copyright © 2011-2022 走看看