• react学习笔记


    1)创建react组件

    class ShoppingList extends React.Component {//组件名为ShoppingList
      render() {//render中 html标签的写法成为JSX语法
        return (
          <div className="shopping-list">
            <h1>Shopping List for {this.props.name}</h1>//通过this.props可以获取到父组件中传过来的值
            <ul>
              <li>Instagram</li>
              <li>WhatsApp</li>
              <li>Oculus</li>
            </ul>
          </div>
        );
      }
    }
    //从Board组件传递一个名为 value 的 prop 到 Square 当中:
    class Board extends React.Component {
      renderSquare(i) {
        return <Square value={i} />;
      }
    }
    
    class Square extends React.Component {

      constructor(props) { //构造函数

       super(props);//调用父组件中的属性

       this.state = {
        value: null,    
      
      };
    }
      render() {
        return (
          <button className="square" onClick={()=>{alert(this.props.value)}}>
            {this.props.value}//通过props调用父组件中的值
          </button>
        );
      }
    }

    注意

    在 JavaScript class 中,每次你定义其子类的构造函数时,都需要调用 super 方法。因此,在所有含有构造函数的的 React 组件中,构造函数必须以 super(props) 开头。

    class Animal{
        // 每一个类中都有一个构造器(构造函数),若没有指定构造器,那么这个构造器是隐形的,构造器的作用,就是每当new一个类,必然优先执行构造器中的代码
        constructor(name,age){
            this.name=name;//通过new实例的属性,叫做实例属性:dog.name
            this.age=age;
            // 静态属性,通过构造函数点出来的,直接访问到的属性叫做静态属性。构造函数名.属性
        }
        // 在class内部通过static修饰的属性就是静态属性,例如Animal.info;
        static info="白色的";
        //动物的实例方法
        say(){
            console.log("汪汪~")
        }
        //可以通过dog.say()来执行;
        //动物的静态方法
        static show(){
            console.log("yellow body")
        }
    };
    const dog=new Animal("大黄",3)

    如果需要写的组件中只包含render方法,不包含state,则可以采用函数组件

    function Square(props){
       return(
         <button class="square" onClick={props.handleClick(i)}>props.value</button>   
        )  
    }    

    classAnimal{// 每一个类中都有一个构造器,若没有指定构造器,那么这个构造器是隐形的,构造器的作用,就是每当new一个类,

    必然优先执行构造器中的代码constructor(name,age){this.name=name;//通过new实例的属性,叫做实例属性:

    dog.namethis.age=age;// 静态属性,通过构造函数点出来的,直接访问到的属性叫做静态属性。构造函数名.属性}// 在class内部通过static修饰的属性就是静态属性,

    例如Animal.info;static info="白色的";//动物的实例方法say(){ console.log("汪汪~")}//可以通过dog.say()来执行;//动物的静态方法

    staticshow(){ console.log("yellow body")}};const dog=newAnimal("大黄",3)

    class Toggle extends React.Component {
      constructor(props) {
        super(props);
        this.state = {isToggleOn: true};
    
        // 为了在回调中使用 `this`,这个绑定是必不可少的
        this.handleClick = this.handleClick.bind(this);//修改this
      }
    
      handleClick() {
        this.setState(state => ({
          isToggleOn: !state.isToggleOn
        }));
      }
    
      render() {
        return (
          <button onClick={this.handleClick}>//绑定事件
            {this.state.isToggleOn ? 'ON' : 'OFF'}
          </button>
        );
      }
    }
    
    ReactDOM.render(
      <Toggle />,
      document.getElementById('root')
    );

     react-router路由<switch>作用:当路由相同时,防止重复匹配(不加switch时,所有相同的路由都会匹配到,包括父级路由)

    <BrowserRouter>
                    <div>
                        <div>
                            <ul>
                                <li>
                                    <Link to="/Guide/AboutUs">AboutUs</Link>
                                </li>
                            </ul>
                        </div>//没有switch时,下班这几个都会匹配到
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                            <Route path="/Guide" component={ AboutUs } ></Route>
                    </div>
                </BrowserRouter>
    <Route>组件有如下属性:
    
    
    path(string): 路由匹配路径。(没有path属性的Route 总是会 匹配);
    exact(bool):为true时,则要求路径与location.pathname必须完全匹配;
    strict(bool):true的时候,有结尾斜线的路径只能匹配有斜线的location.pathname;
  • 相关阅读:
    【NOIp模拟赛】种花
    【NOIP模拟赛】质数序列
    【NOIp模拟赛】兔子
    【NOIp模拟赛】圆桌游戏
    【NOIp模拟赛】花
    【洛谷P2345】奶牛集会
    【洛谷P1774】最接近神的人_NOI导刊2010提高(02)
    【洛谷P1495】 曹冲养猪
    【洛谷P1287】 盒子与球
    NOIP2009 Hankson 的趣味题
  • 原文地址:https://www.cnblogs.com/dongxiaolei/p/13914598.html
Copyright © 2020-2023  润新知