- Published on
 
Những điểm mới trong React 19

- Authors
 - Name
 - Nguyen Pham
 
Tổng quan 
React 19 đã ra mắt với nhiều cải tiến mới, ngoài việc cải thiện hiệu suất, xoá bỏ các hạn chế, loại bỏ các API không cần thiết, React 19 còn giới thiệu một số tính năng mới giúp cho việc phát triển ứng dụng React trở nên dễ dàng hơn.
Các điểm mới trong React 19 
1. Actions 
Actions là một khái niệm mới trong React 19, nó giúp chúng ta quản lý các hành động của người dùng một cách dễ dàng hơn. Với Actions, chúng ta có thể xử lý các sự kiện của người dùng một cách dễ dàng hơn, giúp chúng ta tách biệt logic xử lý ra khỏi giao diện người dùng.
Actions có thể được sử dụng trên cả client và server. Ví dụ, quý vị có thể có Actions client thay thế cách sử dụng trước đó onSubmit cho một biểu mẫu.
import { useState } from "react";
export default function Demo() {
  async function formAction(formData) {
    const newItem = formData.get("item");   
    await fetch("/api/add-item", {
      method: "POST",
      body: JSON.stringify({ item: newItem }),
    });
  }
  return (
    <>
      <form action={formAction}>
        <input type="text" name="item" placeholder="" />
        <button type="submit">Add</button>
      </form>
    </>
  );
}Sử dụng Actions phía server như sau:
Tại client:
"use client";
import { create } from "./actions";
export default function TodoList() {
  return (
    <>
      <h1>Todo List</h1>
      <form action={create}>
        <input type="text" name="item" placeholder="Add todo..." />
        <button type="submit">Add</button>
      </form>
    </>
  );
}Tại server:
"use server";
export async function create() {
    await db.insert({ item: request.body.item });
}2. useActionState 
useActionState là một hook mới trong React 19, nó giúp chúng ta quản lý trạng thái của ứng dụng một cách dễ dàng hơn. useActionState giúp chúng ta quản lý trạng thái của ứng dụng một cách dễ dàng hơn, giúp chúng ta tách biệt logic xử lý ra khỏi giao diện người dùng.
import { useActionState } from "react";
export default function Demo() {
  const [item, setItem] = useActionState("item", "");
  return (
    <>
      <input type="text" name="item" value={item} onChange={setItem} />
    </>
  );
}3. useFormStatus 
useFormStatus là một hook mới trong React 19, nó giúp chúng ta quản lý trạng thái của biểu mẫu một cách dễ dàng hơn. useFormStatus giúp chúng ta quản lý trạng thái của biểu mẫu một cách dễ dàng hơn, giúp chúng ta tách biệt logic xử lý ra khỏi giao diện người dùng.
import { useFormStatus } from "react";
export default function Demo() {
    const status = useFormStatus();
    return (
       <form action={action}>
            <input type="text" name="item" placeholder="" />
            <button type="submit" disabled={status.pending}>Add</button>
        </form>
    );
}4. preload 
preload là một hàm mới trong React 19, nó giúp chúng ta tải trước dữ liệu cần thiết cho trang web một cách dễ dàng hơn. preload giúp chúng ta tải trước dữ liệu cần thiết cho trang web một cách dễ dàng hơn, giúp chúng ta tách biệt logic xử lý ra khỏi giao diện người dùng.
import { prefetchDNS, preconnect, preload, preinit } from "react-dom";
function MyComponent() {
  preinit("https://.../path/to/some/script.js", { as: "script" });
  preload("https://.../path/to/some/font.woff", { as: "font" });
  preload("https://.../path/to/some/stylesheet.css", { as: "style" });
  prefetchDNS("https://...");
  preconnect("https://...");
}<html>
  <head>
    <link rel="prefetch-dns" href="https://..." />
    <link rel="preconnect" href="https://..." />
    <link rel="preload" as="font" href="https://.../path/to/some/font.woff" />
    <link
      rel="preload"
      as="style"
      href="https://.../path/to/some/stylesheet.css"
    />
    <script async="" src="https://.../path/to/some/script.js"></script>
  </head>
  <body>
    <!-- ... -->
  </body>
</html>5. Suspense 
Suspense là một khái niệm mới trong React 19, nó giúp chúng ta quản lý trạng thái của ứng dụng một cách dễ dàng hơn. Suspense giúp chúng ta quản lý trạng thái của ứng dụng một cách dễ dàng hơn, giúp chúng ta tách biệt logic xử lý ra khỏi giao diện người dùng.
import { Suspense } from "react";
export default function Demo() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <OtherComponent />
    </Suspense>
  );
}6. useTransition 
useTransition là một hook mới trong React 19, nó giúp chúng ta quản lý trạng thái của ứng dụng một cách dễ dàng hơn. useTransition giúp chúng ta quản lý trạng thái của ứng dụng một cách dễ dàng hơn, giúp chúng ta tách biệt logic xử lý ra khỏi giao diện người dùng.
import { useTransition } from "react";
export default function Demo() {
  const [startTransition, isPending] = useTransition();
  return (
    <>
      <button onClick={() => startTransition(() => alert("Hello!"))}>
        Say Hello
      </button>
      {isPending ? <div>Loading...</div> : null}
    </>
  );
}Kết luận 
Với những điểm mới trong React 19, chúng ta có thể phát triển ứng dụng React một cách nhanh chóng và hiệu quả hơn.

Nguyen Pham
Làm việc tại phòng thí nghiệm MADE, Texas, USA. Là một người đam mê với công nghệ và thích chia sẻ kiến thức với mọi người.