美文网首页
React入门笔记

React入门笔记

作者: LinaXuanling | 来源:发表于2019-04-10 14:00 被阅读0次

一、环境搭建

在终端安装react:npm install -g create-react-app

新建项目:


create-react-app my-project

cd my-project          

yarn start


二、模版语法

App.js :


import React, { Component } from 'react';

import logo from './logo.svg';

import './App.css';

class App extends Component {

  render() {

    return (

      <div className="App">

        <header className="App-header">

          <img src={logo} className="App-logo" alt="logo" />

          <p>

            Edit <code>src/App.js</code> and save to reload.

          </p>

          <a

            className="App-link"

            href="https://reactjs.org"

            target="_blank"

            rel="noopener noreferrer"

          >

            Learn React

          </a>

        </header>

      </div>

    );

  }

}

export default App;

index.js:


import React from 'react';

import ReactDOM from 'react-dom';

import './index.css';

import App from './App';

import * as serviceWorker from './serviceWorker';

ReactDOM.render(<App />, document.getElementById('root'));

serviceWorker.unregister();

三、PropTypes 与 DefaultProps的应用

PropTypes:首先需引入 import PropTypes from ‘prop-types’;

组件传值时,子组件期望父组件传过来的=的数据类型。

例:


class TodoItem extends Component {

TodoItem.propTypes = {

    content: PropTypes.string,

    //oneOfType:数字类型或者字符串类型

    name: PropTypes.oneOfType([PropTypes.number, PropTypes.string])

}

}

DefaultProps:默认值


TodoItem.defaultProps = {

    test: 'hello world'

}

四、Props, State 与 render函数

当组件的state或者props发生改变的时候,render函数就会重新执行。

数据一变,页面就会被重新渲染。

当父组件的render函数被运行时,它的子组件的render都将被重新运行一次。

五、虚拟DOM

第一种方式:

1、state数据

2、JSX 模版

3、数据 + 模版 结合, 生成真实的DOM, 来显示

4、state 发生改变

5、数据 + 模版 结合, 生成真实的DOM,替换原始的DOM

缺陷:

第一次生成了一个完整的DOM片段

第二次生成了一个完整的DOM片段

第二次的DOM替换了第一次的DOM,非常耗性能

第二种方式:

1、state数据

2、JSX 模版

3、数据 + 模版 结合, 生成真是的DOM, 来显示

4、state 发生改变

5、数据 + 模版 结合, 生成真实的DOM,并不直接替换原始的DOM

6、新的DOM(DocumentFragment) 和原始的DOM 做对比,找差异

7、找出input框发生了变化

8、只用新的DOM 中的input 元素,替换掉老的DOM 中的input 元素

缺陷:

性能的提升并不明显

第三种方式:

1、state数据

2、JSX 模版

3、生成虚拟DOM(JS对象,用它来描述真实DOM) (损耗了性能,极小)

4、数据 + 模版 结合, 生成真实的DOM, 来显示

5、state发生变化

6、数据+模版 生成新的虚拟DOM (极大的提升了性能)

7、比较原始虚拟DOM和新的虚拟DOM 的区别,找到区别

8、直接操作DOM,改变内容

优点:

1)性能提升

2)它使得跨端应用得以实现。 React Native

六、React中ref的使用

直接获取DOM 元素,一般情况下不推荐使用。


handleBtnClick() {

    this.setState((prevState) => ({

      list: [...prevState.list, prevState.inputValue],

      inputValue: ''

    }), () => {   // setState运行后,异步调用这个函数。一般获取DOM 元素就写在该函数中

      console.log(this.ul.querySelectorAll('div').length);

    })

  }

七、React中的生命周期函数

指在某一个时刻组件会自动调用的函数

initialization:初始化

Mounting:组件挂载触发,第一次挂载

componentWillMount: 在组件即将被挂载到页面之前的时刻自动执行。

componentDidMount: 组件挂载到页面之后,自动被执行   
image

componentWillReceiveProps: 一个组件要从父组件接受参数;如果这个组件第一次存在于父组件中,不会执行。如果这个组件已经存在于父组件中,才会执行。

相关文章

  • React 属性于事件

    React.js入门基础与案例开发 by ParryKK in imooc.com 学习笔记 React stat...

  • React Router 路由

    React.js入门基础与案例开发 by ParryKK in imooc.com 学习笔记 react-rout...

  • React 组件

    React.js入门基础与案例开发 by ParryKK in imooc.com 学习笔记 React 使用 加...

  • React学习笔记

    写在前面 React入门学习笔记。 教程可参考:React 教程 | 菜鸟教程阮一峰的网络日志 > React 入...

  • 005@关于JSX语法.md

    005@关于JSX语法 转(有所更改):React入门:关于JSX语法可以参考的资料:React.js学习笔记之J...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • React 学习笔记(一)

    笔记参考:阮一峰react入门教程 一、初识React 1.特点 基于组件,组件里面有自己的state,用组件来做...

  • React Native:从入门到原理

    React Native:从入门到原理 React Native:从入门到原理

网友评论

      本文标题:React入门笔记

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