react的基本认识

react特点

	1)虚拟DOM
    2)组件化,组件系统,在react中组件也是核心之一
    3)声明式
    4)JSX语法(vue中的模板)
    5)一次学习,随处编写(写网站,原生APP(RN),服务端渲染)

react的基本使用:

	 1)下载react.js,并引用react.js。
    2)还需要引入react-dom.js
    3)通过React.createElement创建虚拟DOM
    4)把虚拟DOM挂载到真实的DOM上

创建虚拟DOM的两种方式(这都需要写在script标签中):

1)React.createElement (现在基本上不用)

let vDom = React.createElement('h1',{title:"hello react"},"hello react");

2)JSX语法(script type="text/babel"必写,需要babel对jsx语法进行编译)

引入babel.js可以把jsx语法,转成createElement语法

let vDOM = 

Hello React

把虚拟DOM挂载到真实的DOM上

ReactDOM.render(vDOM,document.getElementById("app"))

jsx总结:

	1)JSX本质就是一个虚拟DOM,最外层必须使用一个唯一的根标签进行包裹。
    2)JSX中的标签是成对出现的,如果是单标签也需要闭合
    3)JSX中的如果放JS代码,JS代码必须写在{}中
    4)JSX中中的{}中,可以放JS表达式(任何有值的内容都是表达式)
    5)JSX中要写注释,注释也需要放在{}中 {/*  */}
    6)JSX中要写行内样式,style={
    {}}
    7)JSX中的如果写class属性,需要写成className,写for属性,需要写成htmlFor

jsx中使用for循环

 students.map((item,index)=>{
 return 
  • {item.name}----{item.age}
  • 组件

    在react中创建组件有两种方式:

    1)通过类的形式创建组件 目前还是主流

    	class组件:
        1)类名也需要大写  类名表示组件名
        2)要把一个class当成一个组件,必须extends React.Component
        3)在类中,必须有一个钩子函数,这个钩子函数叫render
        4)在render函数中,必须去return一个JSX
        class Header extends React.Component{
            render(){
                return (
                    

    我是一个Header组件

    ) } } ReactDOM.render(
    ,document.getElementById("app"))

    2)通过函数的形式创建组件 以后肯定是主流

    	1)函数中必须return一个JSX
      	2)函数名必须大写,表示是一个组件名
      	function Header (){
            return(
                

    我是Header组件

    ) } ReactDOM.render(
    ,document.getElementById("app"))

    ReactDOM.render渲染组件的流程

    	1)判断渲染的是否是一个组件,判定的依据是看首字母是否大写。
        2)如果是组件,判断你的组件是通过函数创建地,还是通过类创建的。
            A)如果是函数创建的,得到函数的返回值,函数的返回值是一个JSX,从而得到虚拟DOM
            B)如果是class创建的,自动调用render钩子函数,这个钩子函数也是返回一个JSX,从而得到虚拟DOM
        3)有了虚拟DOM,react内部就会把虚拟DOm转化成真实DOM
        4)把转化后的真实DOM,挂载到app上面的
    

    通过函数创建组件

    此组件的数据源只能是props,说白了,函数内部不能有自己的状态,数据完全靠外面传入。

    function MyHeader(props){
                return (
                    

    名字:{props.name}, 年龄是:{props.age}, 分数是:{props.score}, 地址:{props.address}, isMerry: { props.isMerry }

      { props.hobby.map((item,index)=>{ return
    • {item}
    • }) }
    ) } ReactDOM.render(,document.getElementById("app"))

    // 对接收的数据进行校验

     MyHeader.propTypes = {
            name:PropTypes.string,
            address:PropTypes.string.isRequired
        }
    
        // 对接收的数据设置默认值
        MyHeader.defaultProps = {
            isMerry:"false"
        }
    

    你可能感兴趣的:(react)