zoukankan      html  css  js  c++  java
  • React 学习记录(二)

    JSX语法

            jsx是应React的出现而出现的,由js和xml结合而成,遇"<"解析xml,遇"{"解析js,利用js来虚拟DOM,利用虚拟DOM Diff算法可以让用户毫无顾及的刷新页面。

      一、JSX注意要点

       1.组件的首字母必须用大写,并且必须封闭,如:<Demo />或<Demo></Demo>;

       2.已经构建好的组件内部无法使用if…else…语法,所以总结下来有两种if…else…的实现方式:

        2.1 改变组件的属性,可以根据条件使用三元运算符;

        2.2 根据不同情况加载不同的标签,则在构建组件的时候,通过在render方法内使用if…else…语法、调用方法的方式实现;  

    import React,{Component} from 'react'
    class DemoIf extends Component{
      constructor(props){
        super();
        this.state={
          name:props.name
        }
      }//构造函数
      render(){
        if(this.state.name=="cheny")
        {
          return(
            <div>
              <h1>{3>8?"Hello KuGou":"Hello EveryOne"}</h1>//三元运算符,选择属性
              <h2>Are you cheny?</h2>//用大的if…else…返回不同的标签
              {this.Sex()}//在方法内if…else…返回不同的标签
            </div>
          )
        }
      else{
        return(
          <div>
            <h1>{3>8?"Hello KuGou":"Hello EveryOne"}</h1>
            <p>Who are you?</p>
            {this.Sex()}
          </div>
        )
      }
    }
    Sex(){
      if(this.state.name=="cheny")
        return <h3>You are a pretty girl</h3>
      else
        return <h3>Ugly!!</h3>
      }
    }

    export default DemoIf

    调用组件:

        render(
          <DemoIf name="cheny"></DemoIf>,
          document.getElementById('if_div')

        )

       3.已经构建好的组件内部无法使用for(…){…}语法,所以在JSX中一般定义Array,使用map(item,index)方法实现,这种情况下需要在循环出来的标签内加上key属性,否则react会显示警告:

       4.事件绑定,on后面的首字母要大写,如:onClick,onFocus,如果在构建组件时绑定事件需要绑定到自身:onClick={this.clickHandle.bind(this)}才可以被触发;

       5.样式设置时,style内设置的是json串而不是字符串,类似于font-size,background-color,需改写成fontSize,backgroundColor。

      二、组件的生命周期

       1.componentWillMount:预加载时执行,在组件被卸载重新加载之前只会被执行一次;

       2.componentDidMount:组件加载完成之后执行,ajax请求可以在方法内;

       3.componentWillReceiveProps(nextProps):在组件接收到props的时间点时调用,参数为改变了的props;

       4.shouldComponentUpdate(nextProps, nextState):该接口实际是在组件接收到了新的props或者新的state的时候会立即调用,然后通过返回值来决定是否要重新渲染当前的组件,返回true或false;

       5.componentWillUpdate:shouldComponentUpdate为true,在组件更新之前调用;

       6.componentDidUpdate:在组件更新完成调用

      

     

  • 相关阅读:
    Redis-数据类型
    文件转二进制流拆分与组装
    word 文件转PDF 预览
    查询数据库还原时间
    Window10主机连接到Docker 中的mysql 数据库
    sqlServer 执行存储过程结果存表中
    启动mysql 镜像
    Java类型转换细节
    IDEA常用插件
    IDEA控制台中文乱码
  • 原文地址:https://www.cnblogs.com/kekeSummer/p/7596912.html
Copyright © 2011-2022 走看看