react-笔记(2)

1、react的引入
     react的语法
     import React from "react";
   reactDOM渲染的时候需要用到ReactDOM
   import ReactDom from "react-dom";
 

2、map遍历循环( 类vue的v-for )
    let Dom = (
        arr.map((item,index)=>{
            return <li key={index} className="list">{item}</li>
        })
    )
 

3、元素是否显示隐藏(类vue的v-if v-show v-htm v-text
    let Dom = <h2 style={{display:false?"block":"none"}}>{false?names:message}</h2>
 

4、属性绑定(类vue的v-bind)
    let Dom = <h2 title={title}>{title}</h2>
 

5、class名
    className
 

6、for
    htmlFor 多用于label
 

7、render函数
    参数1:需要渲染的组件或者DOM结构
     参数2:将渲染的虚拟DOM放在那个标签内部
     参数3:回调函数
     eg:
        ReactDom.render(
            Dom,
            document.querySelector("#root"),
            ()=>{
                console.log("渲染成功")
            }
        )
 

8、需要安装:
        cnpm install react react-dom --save-dev
 

9、组件规则
    1)组件可以用单标签 双标签
        <App/>
        <App></App>
    2)react严格规定 组件名称必须大写
    3)区分组件和ELEMENT的区别
 

10、如何定义组件
    export default class App extends Component{
            render(){
                里面必须要有render函数,必须返回一个jsx语法
            )
        }
    }
 

11、react中如何对数据进修改?
        this.setState({
            key:value
            1)key是需要修改的属性
            2) value是需要修改成的值
        })
 

12、组件
import React,{Component,Fragment} from "react";
 
//定义组件,继承组件父类,
export default class App extends Component{
    constructor(){
        //初始化生命周期函数
        //必须要写super()
        super()
        //当前组件的状态
        this.state={
            message:'1815'
        }
    }
    // 里面必须要写一个函数render
    render(){
        let {message}=this.state;//解构赋值
        //必须返回一个jsx语法
        return (
            //this指向实例化对象,本对象App
            //里面的this 指向App
            <Fragment>
                <h2 onClick={this.handleClick.bind(this)}>{message}</h2>
                {/* <h2>App1</h2> */}
            </Fragment>
        )
    }
    handleClick(e){
        console.log(this)//undefine(指向的一个虚拟dom)
        // alert(1)
        // console.log(e)
        // this.state.message="1234"//在react修改数据不予许这么做
 
        this.setState({
            message:"111"
        })
    }
}
//Fragment不会被渲染到页面上,可以当作无用标签去使用
 
/*
render()
    render用来渲染虚拟dom,当第一次渲染完毕以后,会将渲染的结果保存在缓存当中,当数据发生改变的时候
    render会进行第二次渲染,会将缓存的数据拿出和现在的数据进行对比,改变需要改变的虚拟dom,
    而不是将所有虚拟dom重新渲染
 
constructor()
    初始化函数 生命周期
    super()继承(必须写,否则报错)
    定义当前组件的状态(属性)
*/
 
 
原文地址:https://www.cnblogs.com/liuqinq/p/10017126.html