Skip to main content

Command Palette

Search for a command to run...

React hook - useEffect - run useEffect only once

Updated
2 min readView as Markdown
React hook - useEffect - run useEffect only once
  • Truyền 1 function làm tham số thứ nhất của useEffect
  • Truyền 1 mảng rỗng làm tham số thứ hai của useEffect
  • Function ở tham số thứ nhất sẽ chỉ gọi đúng 1 lần duy nhất.
  • Tương đương componentDidMount trong class.

Ví dụ:

  • Tạo biến count = 0
  • Khi render lần đầu tiên thì document title hiển thị: You click 0 times
  • Khi click vào button thì count + 1
  • Mặc dù click nhiều lần nhưng document title không thay đổi.
// HookCounter.js
import { useState, useEffect } from 'react'

export default function HookCounter() {
  const [count, setCount] = useState(0)

  useEffect(() => {
    document.title = `You click ${count} times`
  }, [])

  return (
    <button onClick={() => setCount(count + 1)}>
      Click {count} times
    </button>
  )
}

Viết code lại tương đương với componentDidMount trong class

// ClassCounter.js
import { Component } from 'react'

export default class ClassCounter extends Component {
  constructor(props) {
    super(props)
    this.state = { count: 0 }
  }

  componentDidMount() {
    document.title = `You click ${this.state.count} times`
  }

  render() {
    const { count } = this.state
    return (
      <button onClick={() => this.setState({ count: count + 1 })}>
        Click {count} times
      </button>
    )
  }
}

Demo online

ReactJS

Part 14 of 19

ReactJS là một thư viện JavaScript mã nguồn mở được thiết kế bởi Facebook để tạo ra những ứng dụng web hấp dẫn, nhanh và hiệu quả với mã hóa tối thiểu. Series hướng dẫn học ReactJS cơ bản.

Up next

React Hooks - useEffect - Conditionally run effects

Truyền 1 function làm tham số thứ nhất của useEffect Truyền 1 mảng làm tham số thứ hai của useEffect Truyền các giá trị state vào trong mảng để useEffect theo dõi Function ở tham số thứ nhất sẽ được gọi khi có sự thay đổi state Tương đương với compon...

More from this blog

KenTrung VN

23 posts

Mình mới ba mấy tuổi thôi mà đứng dậy nhanh quá đã hơi chóng mặt 🤪🤪🤪