Yêu cầu thg 6 14, 2022 3:42 SA 178 1 1
  • 178 1 1
+2

Thứ tự thực hiện của useState trong ví dụ Counter

Chia sẻ
  • 178 1 1

Mọi người cho mình hỏi thử tự thực hiện của hàm handleIncrease này là sao nhỉ?

Ở lần click đầu tiên thì sẽ là 1 - 2.1 - 3 - 2.2

Ở các lần click tiếp theo sẽ là 1 - 3 - 2.1 - 2.2

Theo mình có đọc trên docs của React thì setState là async, nhưng mình không hiểu sao lần đầu tiên click nó lại chạy theo thứ tự như thế ạ?

StackBlittz

import React from 'react';
import './style.css';

export default function App() {
  const [count, setCount] = React.useState(1);
  const hanldeClick = () => {
    console.log('1');
    setCount((prevCount) => {
      console.log('2.1');
      return prevCount + 1;
    });
    setCount((prevCount) => {
      console.log('2.2');
      console.log('------------');
      return prevCount + 1;
    });
    console.log('3');
  };

  return (
    <div>
      <h1>Hello StackBlitz! {count}</h1>

      <button onClick={hanldeClick}>Click</button>
    </div>
  );
}

1 CÂU TRẢ LỜI


Đã trả lời thg 6 14, 2022 6:03 SA
+1

theo mình được biết thì console.log là web api, cũng là async, lần 1 nó chạy thế mới đúng. chưa giải thích được tại sao từ lần 2 nó lại chạy như vậy

Chia sẻ
thg 6 20, 2022 9:04 SA

@HungSmeb không thuyết phục, cả 3 bình luận bên dưới

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí