React认识

作者: 简约酒馆 | 来源:发表于2019-11-17 17:29 被阅读0次

    react学习文档:https://www.reactjscn.com/

    React起源于Facebook的内部项目,因为该公司对市面上所有的JavaScript MVC框架都不满意就决定自己写一套,用来架设Instagram网站。做出来的以后发现这套东西好用,就在2013年5月开源了

    React   特点

    1.声明式设计:采用声明范式,可以轻松描述应用jsx

    2.高效:通过对DOM的模拟,最大限度地减少与DOM的交互

    3.灵活:可以与已知的库或框架很好地配合

    4.数据驱动

    5.单项数据流

    6.组件化开发

    组件 

    组件是 UI(网页)界面的一部分  React应用UI的构建块,这些组件将整个UI分成小的独立并可重用的部分,每个组件彼此独立,而不会影响UI的其余部分

    优点:

    1.方便代码重用

    2.便于代码管理

    3.便于团队协作

    React的理解

    react是构建用户页面的avascript库不是框架 React中路由Router 状态Redux axios 都是需要下载而框架是集成的不需要下载直接使用 

    安装React脚手架

    cnpm install create-react-app  -g  全局安装环境

    安装yarn

    特点:下载 速度超快,Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快

    cnpm  install  yarn  -g      全局安装

    可以使用yarn 快速下载模块:   yarn   add    模块名

    同时可以用yarn启动项目:yarn   start

    使用React脚手架创建项目

    create-react-app  项目名称

    脚手架搭建的项目包含以下文件:

    .git 版本管理

    node_modules 依赖模块

    public 静态文件

    src   写源码的文件夹

    App.js               App组件

    App.css            App组件的样式文件

    App.test.js       测试文件

    index.css         全局样式文件

    index.js               入口文件

    创建组件

    1.函数方式创建组件

    import  React  from "react";                                //引入React模块 

    import  "./top.css"                                               //引入组件样式

    function  Top(props){                                        //通过函数创建了一个组件名称为Top ;  (props)接收外部传入的数据

        return (                                                          //返回React元素  是原生DOM组件的表示

              <div className="top">

                    <h3> { props.title } </h3>

              </div>

        )

    }

    export default  Top                                          // 导出当前创建好的Top组件

    组件内部视图只能有一个顶级元素

    标签内部的class属性要换成className     目的:不与Es6 class类函数起冲突

    渲染组件:

    <组件名 id=""  title=""><组件名 >

    2.通过类创建的组件  

    import React, {Component}from 'react';                 //引入React模块 

    class City extends Component {                          //通过类创建组件名为City的组件

        constructor(props) {                                          //constructor   构造方法    构造函数本身

                super(props);                                           // super(props)接收父组件传递的参数

        }

        render() {                                                    //每个组件强制必须有一个render(),它返回React元素   是原生DOM组件的表示

                return (  

                        <div> {this. props.title } </div>        //this.props 接收父组件通过属性传递的值

                    );

            }

    }

    export default City;                                        // // 导出当前创建好的Top组件

    特点:

    1.组件传值 :父组件通过属性传值       子通过this.props.属性名接收

    2.状态:声明式渲染

    3数据:数据驱动

    创建好的组件引入根组件App.js

    import React from 'react';                                          //引入React模块 

    import './App.css';                                                        //引入App组件样式 

    import Top  from  "../top/Top";                                      //引入Top组件 

    import  City  from  "../city/City"                                      //引入City组件 

    function App() {

      return (                                                

        <div className="App">                                 

               <Top title="aaaaaaaaaaaaaaaa" ></Top>                //Jsx语法:  组件标签的首字母大写 跟html标签区分   组件是可以重用的根据传入不同的属性值,呈现不一样的主体内容

               <Top title="标题2222222222222" ></Top>                

               <Top title="标题333333333333" ></Top>

               <Top title="标题444444444444" ></Top>

               <City  title="当前城市:落山鸡"  ></City >

        </div>

      );

    }

    export default App;                  

    类组件(class component)和函数式组件(functional component)之间有何不同

    1.构造函数创建的组件叫:无状态的组件;

    2.class关键字创建的组件叫:有状态的组件;

    3.有状态和无状态的本质的区别在于是否有state(状态)属性

    state用来设置状态

    使用this.state的地方是构造函数 state是组件的核心   基本上状态是确定组件的呈现和行为的对象

    setState用来改变状态

    setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法

    注意:不能再组件内部通过this.state修改状态,因为该状态会在调用setState()后被替换

    replaceState()方法与setState()类似,但是方法只会保留nextState状态,原state不在nextState中的状态都会被删除。

    使用语法:

    replaceState(object nextState[function clallback]) nextState,将设置的状态替换当前的state callback。可选参数,该函数会在replaceState设置成功,且重新渲染组件

    React主要优点

    它提高了引用的性能可以方便的在客户端和服务器端使用,由于JSX代码的可读性好 React很容易与Metor,Angular等其他框架集成。

    什么是JSX

    jsx是JavaScript的简写

    jsx是javascript高级语法糖,最终执行时还是会转成原生的js,通过bebel等方式

    在编写React中如何使用jsx语法?

    在需要使用JavaScript代码的时候使用{}包裹   但是这个花括号只能填写一句JavaScript代码  如果你在{}花括号内填写for循环等多行代码时,它就会报错

    如何在React组件中绑定事件呢?

    <div onClick={this.show}> 显示</div>

    React中的refs

    refs是React提供给我们安全访问DOM元素或者某个组件实例的句柄,我们可以为元素添加ref属性然后在回调函数中接受该元素在DOM中的句柄,该值会最为回调函数的第一个参数返回,用于对render()返回的特定元素或组件引用。当需要进行DOM测量或向组件添加方法时,他们就会派上用场。

    给需要获取DOM元素节点添加ref属性                              <div ref="title">你好 世界</div>

    在需要获取DOM元素的回调函数中                            this.refs.title      获取到真实的DOM元素节点    

    React中有三种构建组件方式

    1.React.createClass()

    2.Es6   class

    3.无状态函数组件

    defaultchecked

    可以返回checked属性的默认值;该属性在checkbox默认被选定时返回true,否则返回false


    相关文章

      网友评论

        本文标题:React认识

        本文链接:https://www.haomeiwen.com/subject/gtyuictx.html