当前位置: 代码迷 >> 综合 >> react useEffect
  详细解决方案

react useEffect

热度:75   发布时间:2023-10-02 03:27:26.0

useEffect

函数组件中没有生命周期,那么可以使用 useEffect 来替代。如果你熟悉 React class 的生命周期函数,你可以把
useEffect Hook 看做 componentDidMount,componentDidUpdate 和
componentWillUnmount
这三个函数的组合。

react 示例

class Example extends React.Component {
    constructor(props) {
    super(props);this.state = {
    count: 0};}componentDidMount() {
    document.title = `You clicked ${
      this.state.count} times`;}componentDidUpdate() {
    document.title = `You clicked ${
      this.state.count} times`;}render() {
    return (<div><p>You clicked {
    this.state.count} times</p><button onClick={
    () => this.setState({
     count: this.state.count + 1 })}>Click me</button></div>);}
}

Hook 示例

import React, {
     useState, useEffect } from 'react';function Example() {
    const [count, setCount] = useState(0);useEffect(() => {
    document.title = `You clicked ${
      count} times`;});return (<div><p>You clicked {
    count} times</p><button onClick={
    () => setCount(count + 1)}>Click me</button></div>);
}

你可以通知 React 跳过对 effect 的调用,只要传递数组作为 useEffect 的第二个可选参数即可,如果想执行只运行一次的
effect(仅在组件挂载和卸载时执行),可以传递一个空数组([])作为第二个参数。这就告诉 React 你的 effect 不依赖于
props 或 state 中的任何值,所以它永远都不需要重复执行

useEffect(() => {
    document.title = `You clicked ${
      count} times`;
}, [count]); // 仅在 count 更改时更新
  相关解决方案