学习react的一点点知识

98 阅读3分钟

学习react的一点点知识

00181-3642237249-a pen_.png

关于react框架

React是一个由Facebook开发并维护的开源JavaScript库,用于构建用户界面,特别是单页应用。它为开发复杂、大型和动态的JavaScript应用程序提供了一个基础框架。

React的主要特点包括:

  • 组件化:React采用组件化模式,开发者可以将复杂的UI破解成一些小的、独立的、可复用的组件,这样不仅使开发变得更简单,也达到了代码复用的效果。

  • 虚拟DOM(Virtual DOM):React中引入了一种可以提高渲染性能的技术,即虚拟DOM。简单来说,就是在JavaScript和真实DOM中间加了一个缓存。当状态变更时,React首先通过比对新旧虚拟DOM差异(Diffing Algorithm)计算出最小的变更,然后批量、高效地更新到真实DOM。

  • 声明式编程:在React中,开发者只需描述应用在任一特定状态下的UI呈现情况,而无需关注过程。

  • 单向数据流:React实现了单向响应的数据流,这使得组件的状态预测变得更容易。

React不是一个完整的MVC/MVVM框架,它更多地是关注视图(View)。为了构建完整的前端应用,React通常会配合其他库使用,如Redux进行状态管理,React Router进行路由管理等。

组件化

创建一个组件

function MyButton() {
  return (
    <button>I'm a button</button>
  );
}

添加一个组件

<MyButton />

通过ReactDOM.render 会在某个 DOM 元素下面渲染 HTML 内容

ReactDOM.render(
            <div>
                <h1>学习react</h1>
                <h2>学不好,就去睡觉</h2>
                <div>好了</div>
            </div>,
            document.getElementById('root'),
        )

看代码的时候可以先看render,也可以先看state的变更

使用js代码

{} 里面可以使用 js 的语法, 如变量、注释 也可以用 {} 把代码中的变量展示给用户,或者作为变量传递

使用JSX

大部分react项目都会使用JSX,JSX会比html更加严格

添加样式

因为 class 是关键字, 所以使用 className 表示 HTML 里面的 class

响应事件

function MyButton() {
  function handleClick() {
    alert('You clicked me!');
  }

  return (
    <button onClick={handleClick}>
      Click me
    </button>
  );
}

在组件中,声明事件处理函数来响应时间

更新界面

在react中,需要使用state来更新界面 只能用类方法来使用state

constructor(props) {
    // 如果用了 constructor, 就要调用 super(props)
    super(props)
    this.state = {
        showNote1: true,
        showNote2: true,
    }
}

而state的状态只能由setState来改变

this.setState({
      showNote1: !this.state.showNote1,
  })

每次更新state发生了改变,就会调用render方法 不显示信息的时候,可以把信息直接设置为null

更改state的时候就会自动调用render方法

生命周期

举几个栗子

componentDidMount()

componentDidMount 会在组件被render之后执行,而且只执行一次

componentWillUnmount()

componentWillUnmount 会在组件 移除 之后执行,而且只执行一次。

类与函数

其实都一样,觉得什么方便用什么。 在类中,会在改变state的时候改变渲染,在函数中需要使用到Hooks特性。 比如下面的useState的hooks,前面的值用来储存数据,而后面的值相当于setState,改变时就会 重新渲染。

import { useState } from 'react'

const MyButton = () => {
    const [count, setCount] = useState(0)

    const handleClick = () => {
      setCount(count + 1)
    }

    return (
        <button onClick={ handleClick }>
            Clicked {count} times
        </button>
    )
}

在hooks中也可以实现上面的生命周期,只要在useEffect()中返回一个函数即可。