react小白知识点以及面试知识标题(1)React入门

一、react入门

1.1 React的基本认识

  1)、Faceboock开源的一个js库

  2)、一个用来动态构建j用户界面的s库的

  3)、React的特点:

    Declarative(声明式编码)

    Component-Based(组件式编程)

    Learn Once, Write Anywhere(支持客户端服务器渲染)

    高效、单项数据流

  4)、React高效的原因

    虚拟(virtual)DOM,不总是直接操作DOM(批量更新,减少更新次数)高效的DOM Diff算法,最小化页面重绘(减小页面更新的区域)

1.2 React的基本使用

  1)、导入相关的js库(react.js,react-dom.js,babel.min.js)

  2)、编码:

      <div id="container"></div>

      <script  type="text/babel">

        let aa = 123;

        let bb = "text";

        ReactDOM.render(<h1 id={bb}>{aa}</h1>,containerDOM)

      </script>

1.3 jsx的理解和使用

  1)、理解:

    全称 javascript jsx

    react定义的一种类似于XML的js扩展语法:XML+js

    作用:用来创建react虚拟DOM(元素)对象

  2)、编码相关

    js中直接可以嵌套标签,但标签要套js需要放在{ }中  

    在解析显示js数组时,会自动遍历显示

    把数据的数组转换为标签数组:

      let liArr = dataArr.map((item,index) =>{

        return <li key = {index}>{item}</li>

      })

  3)、注意:

    标签必须有结束、

    标签的class必须改为className属性、

    标签的style属性必须为双{{ }}列:{{color:"red",width:"12px"}}

1.4 几个重要概念理解

  1)、模块与组件

    1、模块:

        理解:向外提供特定的功能的js程序,一般就是一个js文件、

        为什么:js代码更多更复杂、

        作用:复用js,简化js的编写,提高js的运行效率、

    2、组件:

        理解:用来实现特定功能效果的代码集合(HTML、CSS、JS)、

        为什么:一个界面的功能太过于复杂、

        作用:复用编码、简化项目界面编码,提高运行效率

  2)、模块化与组件化    

    1、模块化:

        当应用的js都以模块来编写的,这个应用就是一个模块化的应用、

    2、组件化:

        当应用是以多个组件的方式实现功能,这个应用就是组件化的应用、

 二、react的组件化开发

2.1 基本理解和使用

  1)、 自定义标签:组件类(函数)标签

   2)、创建组件:

    方式一:function myComponent1(props){

          return(<h1>自定义组件标题</h1>)

        }

    方式二:ES6语法(复杂组件推荐使用)

    class MyComponent 2 extends React.Component{

      render(){

        return(<h1>类组件声明方式</h1>)

      }

    }  

  3)、渲染组件标签 

    ReactDOM.render(<MyComp />, cotainerEle)

  4)、ReactDOM.render( )渲染组件标签的基本流程

    React内部创建组件实例对象/调用组件函数、得到虚拟DOM对象,

    将虚拟DOM解析成真是DOM,插到指定页面元素内部。

2.2 组件的三大属性之:props

    所有组件标签的属性集合对象,给标签指定属性,

  保存外部数据(可能是个undefind)

  在组件内部读取属性:this.props.porpertyName

  作用:从目标组件外部向组件内部传递数据(也就是父传子);

  对props中的属性值进行类型限制和必要性限制

2.3 组件的三大属性之:state

  1)、组件被称为 “状态机”,页面的显示是根据组件的state属性的数据来显示

  2)、初始化定义:

    constructor(props){

      super(props);

      this.state={ active:1}

    }

  3)、读取显示:

    this.state.active

  4)、更新状态==》更新界面显示:

    this.setState({active:0})

2.4 组件的三大属性之:refs

  组件内包含ref属性的标签的元素集合对象

  给操作目标标签指定ref属性,打一个标识

  在组件内部获取标签对象:this.refs.refName(只得到了标签元素对象)

  作用:找到组件内部的真实dom元素对象,进而操作

2.5 组件中的事件处理

  1)、给标签添加属性:onXxx={this.eventHandler}

  2)、在组件中添加事件处理方法

    eventHandler(e){

    }

  3)、使自定义方法中的this作为组件对象

    在constructor()中bind(this)使用箭头函数定义方法(ES6模块化编程时才能使用)

  4)、事件监听

    绑定事件监听  事件名  会掉函数

    触发事件 用户对相应的界面做对应的操作

2.6 组件的组合使用

  1)、拆分组件:拆分界面,抽取组件

  2)、实现静态组件:使用组件实现静态效果

  3)、显示动态组件:

    1、动态显示初始化数据

    2、交互功能(从绑定事件监听开始)

2.7 组件的生命周期

  1)、组件的三个生命周期状态:

    Mount:插入真实DOM

    Update:被从新渲染

    Unmount:被移除的真实DOM

  2)、生命周期流程

    1、第一次初始化显示:ReactDom.render(<Xxx />,containDom)

      constructor();

      componentWillMount():将要插入回调

      render():用于插入虚拟DON回调

      componentDidMount():已经插入回调

    2、每次更新state:this.setState({ });

      componentWillReciveProps():j接收父组件更新新的属性(redux更新的也能获取)

      componentWillUpdate():将要更新回调

、     render():更新(重新渲染);

      componentDidUpdate():组件将要移除回调

    4、常用的方法

      render():必须填写,返回一个自定义的虚拟DOM

      constructor():初始化状态,绑定this可以箭头函数代替;

      componentDidMount():只执行一次,已经在DOM树中,适合启动/设置一些监听

      组件生命周期(http://i.imgur.com/hSkhD9f.png)    

    

2.8 虚拟DOM与DOM、Diff算法

  1)、虚拟DOM是什么?

    一个虚拟DOM(元素)是一个一般的js对象,准确地说是一个对象树(倒立的DOM树)

    虚拟DOM保存了真实DOM的层次关系和一些基本属性,与真实DOM一 一对应

      如果只是更新虚拟DOM页面不会重绘额

  2)、Virtual Dom 算法的基本步骤

    用js对象树表示DOM树的结构,然后用这个树构建一个真正的DOM树插到文档中

      当状态变更的时候,从新构造一个这样的对象树,然后用新的树和旧的树进行比较,记录两颗树差异

      把差异应用到真实DOM树上,视图就更新了

  3)、进一步了解

      Virtual DOM 本质就是在 js 和 DOM 之间做了一个缓存。

2.9 命令式与声明式编程

  声明式编程

    只关注做什么,不关注怎么做(也就是流程),类似填空题。

  命令式编程

    既要关注做什么,也要关注怎么做,类似于问答题

 

 没理解对的地方,还望纠正,指教。

 

每天记录一节、促进自己成长加深印象,内容只限于初学者。

ღ( ´・ᴗ・` )比心

posted @ 2022-06-08 02:51  Mr-Qin  阅读(60)  评论(0编辑  收藏  举报