发布于 2026-01-06 0 阅读
0

沉迷于 React JS

沉迷于 React JS

介绍

React 由 Facebook 开发,旨在满足这家社交媒体巨头在持续扩张过程中对更高效、更易于管理的代码日益增长的需求。React 于 2013 年发布,最初在开发者社区中遭遇了一些质疑,但很快便展现出其多功能性和稳定性,赢得了众多团队的青睐,帮助他们提升应用程序的速度和响应能力。React 是一个开源的 JavaScript 库,用于构建由组件组成的用户界面。组件是可以接收属性的函数,用于描述 UI 的某个部分如何在页面上显示以及如何在 DOM 中渲染。您可以为应用程序中的不同状态声明视图,React 会通过虚拟 DOM 处理更新和重新渲染的通信,从而使用户能够快速看到更改。通过构建封装的组件来管理自身状态,可以保持代码的组织性,从而加快编辑和调试速度——这对于像 Facebook 这样的大型应用程序至关重要,但对于任何规模的程序来说也同样方便。

React 中的生命周期

无论代码中是否明确描述,所有 React 类组件都会经历一个四部分生命周期:初始化(使用其 props 和默认状态构造组件)、挂载(将组件渲染到 DOM 上)、更新(更改组件并重新渲染和重绘应用程序)和卸载(从 DOM 中移除组件,释放相关资源)。


class Clock extends React.Component {
  constructor(props) { //initializes class with props and state
    super(props);
    this.state = {date: new Date()};
  }

  componentDidMount() {
  //some code to run when component is rendered
  //maybe fetch some data
  }

  componentWillUnmount() {
  //perform cleanup after component is removed from DOM
  //cancel network request, clear a counter, etc
  }

  render() { //outputs its contents to DOM (required)
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>It is {this.state.date}.</h2>
      </div>
    );
  }
}

以前,只有类组件才能访问这些方法并管理状态。函数组件只是简单地向 DOM 输出一个元素。React 开发者引入 Hooks 后,彻底改变了这一切。

我们约会吧

自 2018 年起,Hooks 一直是 React 的一项实验性功能,并于 2019 年 2 月发布的 React 16.8 版本中正式推出。Hooks 允许你“挂钩”生命周期组件(无需类),并为函数式组件赋予状态,从而编写出更简洁、更易读的代码。Hooks 是一项“可选”功能,这意味着它们与类完全兼容,不会破坏旧代码,这使得开发者可以轻松地将它们集成到现有代码库中。Hooks 可以让组件变得简洁高效:

//a class component

import React from "react"

class App extends React.Component {
   constructor() {
      super();
      this.state = {
         answer: 'Yes'
      }
   }

   render() {
      return (
         <div> 
            <h1> Is state important to know? {this.state.answer} </h1>
         </div>
      )
   }
}

export default App
//a functional component using hooks

//you must import hooks
import React, { useState } from "react"

function App() {
   const [ answer ] = useState('Yes')

   return (
      <div>
         <h1> Is state important to know? {answer} </h1>
      </div>
   )
}

export default App

最常见的两个钩子是 useState 和 useEffect。

useState()

此方法用于管理要显示的状态。它利用了数组解构。其第一个值是要保存的状态,第二个值是一个允许你更改该状态的函数。


import React, { useState } from "react"

function App() {
  const [count, setCount] = useState(0) //default value is 0

  function increment() {
     setCount(prevCount => prevCount + 1)
  }

  return (
    <div> 
      <h1> {count} </h1>
      <button onClick= {increment}> Increment! </button>
    </div>
  )
}

使用效果

useEffect 有效地取代了生命周期方法,它允许我们创建副作用——即从组件外部执行某些操作,例如发起网络请求、监听事件或操作 DOM。它接受一个回调函数和一个数组,您可以在该数组中指定要监听的变量。

//with no second argument, runs the function on every component render

useEffect(() => {
   functionCall()
},)

//replaces componentDidMount by putting array as second arg, runs once

useEffect(() => {
   functionCall()
}, [])

/* replaces deprecated componentWillUpdate by adding variables to the array 
that it will watch for changes on */

useEffect(() => {
   functionCall()
}, [watch, these, variables])


//replaces componentWillUnmount if returning function to clean up side effects

useEffect(() => {
   function doStuff() {
     //effect
   }
   return function cleanup() {
     //remove effect
   }
}, [])

此外,React 还包含以下更高级的内置 Hook:useContext、useReducer、useCallback、useMemo、useRef、useImperativeHandle、useLayoutEffect 和 useDebugValue。您甚至可以创建自定义 Hook 来处理程序特有的复杂逻辑。

结论

React 是一个简单而强大的库,用于快速构建交互式用户界面。它将界面拆分成封装的组件,每个组件都拥有自己的状态,并抽象化了渲染方法的大部分复杂性。Hooks 的引入进一步简化了 React 组件,通过允许函数式组件“钩入”生命周期方法,并支持在多个组件之间共享可重用的状态逻辑,从而消除了复杂类组件的必要性。代码变得更加简洁、清晰,也更容易阅读和理解。最重要的是,Hooks 与旧版 React 代码完全兼容,开发者可以选择将其引入现有程序,而不会破坏任何功能。您可以利用 React 内置的众多实用 Hooks,甚至可以创建自己的 Hooks。

文章来源:https://dev.to/christinegaraudy/hooked-on-react-js-8pl