- vừa được xem lúc

Tips and tricks trong ReactJS

0 0 139

Người đăng:

Theo Viblo Asia

Dưới đây sẽ là một số thủ thuật tuyệt vời mà bạn có thể áp dụng để cải thiện chất lương project React của mình.

Những thủ thuật này sẽ không chỉ làm cho code của bạn sạch sẽ và đáng tin tưởng hơn, mà còn mục đích là làm việc trải nghiệm và phát triển ứng dụng React của bạn trở nên đơn giản và thú vị hơn.

Hãy áp dụng những thủ thuật này trong project React của bạn ngay hôm nay thôi nào

Thay thế redux bằng React query

Khi ứng dụng của chúng ta trở nên lớn hơn, việc quản lí các state trên các component của chúng ta đương nhiên sẽ trở nên rắc rối hơn nhiều, chúng ta có thể tìm đến các thư viện quản lí state như redux.

Nếu như dữ liệu của chúng ta nhận đầu vào dữ liệu từ API, thường thường thì chúng ra sẽ sử dụng redux để fetch state server và sau đó cập nhật state vào ứng dụng của mình.

Đây có thể là một quá trình đầy khó khăn, ban không chỉ phải tìm và fetch dữ liệu mà còn phải xử lí các state khác nhau, tùy thuộc vào dữ liệu hoặc ở trạng thái loading, error ...

Thay vì sử dụng redux để quản lí dữ liệu lấy từ server, bạn có thể dử dụng React Query.

React Query không chỉ cho phép bạn kiểm soát tốt hơn việc thực hiện các yêu cầu HTTP trong ứng dụng của bạn thông qua các hooks sẵn có mà còn cho phép quản lí các state liền mạch trên các component, không phải tự cập nhật trạng thái theo cách thủ công.

Đây là cách sử dụng React Query trong tệp index.js:

import { QueryClient, QueryClientProvider } from 'react-query'
import ReactDOM from "react-dom"; import App from "./App"; const queryClient = new QueryClient() const rootElement = document.getElementById("root");
ReactDOM.render( <QueryClientProvider client={queryClient}> <App /> </QueryClientProvider>, rootElement
);

Ở đây chúng ta đang thiết lập một query client mà nó sẽ thiết lập cache để chúng ta dễ dàng quản lí bất kì một requests nào mà đã được thực hiện trong quá khứ, cộng với một component để chuyển nó xuống toàn bộ tree component.

Làm thế nào để bạn bắt đầu thực hiện các request tới React Query ?

Bạn có thể làm như vậy với hook useQuery, lấy một số nhận dạng cho query (trong trường hợp này vì chúng ta đang nạp dữ liệu user, vì vậy sẽ để là 'user'). cộng với một fucntion sử dụng để tìm và fetch dữ liệu.

import { useQuery } from "react-query"; export default function App() { const { isLoading, isError, data } = useQuery("user", () => fetch("https://randomuser.me/api").then((res) => res.json()) ); if (isLoading) return "Loading..."; if (isError) return "Error!"; const user = data.results[0]; return user.email;
}

Như bạn có thể thấy, React Query đảm nhận việc quản lí các states khác nhau này có thể diễn ra khi chúng ta tìm và fetch data. Chúng ta không cần phải quản lí các state này thủ công nữa, chúng ta cũng có thể hủy chúng từ những gì trả về qua useQuery.

Bây giờ chúng ta đã fetch dữ liệu user và lưu trữ nó ở trong bộ nhớ cache, tất cả những gì chúng ta cần làm để có thể sử dụng nó trên bất kì component nào khác là gọi useQuery() với từ khóa 'user' mà chúng ta đã liên kết với nó.

import { useQuery } from "react-query"; export default function OtherComponent() { const { data } = useQuery('user'); console.log(data);
}

Làm cho React context trở nên dễ dàng hơn thông qua việc sử dụng custom hooks.

Bạn có thể theo dõi lại bài viết cũ của tôi tại đây để hiểu rõ hơn

Quản lí context providers trong một Custom component.

Hầu hết trong mọi ứng dụng react js, bạn sẽ cần một số trình Context providers.

Sau khi làm việc với React một thời gian, đây là xu hướng hầu hết của mọi người:

ReactDOM.render( <Provider3> <Provider2> <Provider1> <App /> </Provider1> </Provider2> </Provider3>, rootElement
);

Chúng ta có thể làm gì với sự lộn xộn này ?

Thay vì đặt tất cả các context providers vào file, chúng ta có thể tạo ra một component có tên là ContextProviders.

Điều này cho phép chúng ta sử dụng các children prop, sau đó chúng ta cần làm là đặt tất cả các providers vào component này:

src/context/ContextProviders.js export default function ContextProviders({ children }) { return ( <Provider3> <Provider2> <Provider1> {children} </Provider1> </Provider2> </Provider3> );
}

Sau đó bọc Context Providers ngoài App:

src/index.js import ReactDOM from "react-dom";
import ContextProviders from './context/ContextProviders'
import App from "./App"; const rootElement = document.getElementById("root");
ReactDOM.render( <ContextProviders> <App /> </ContextProviders>, rootElement
);

Sử dụng map với React fragment

Hàm map() trong React cho phép chúng ta lấy 1 mảng và lặp nó, sau đó hiển thị ra từng phần tử dữ liệu qua Jsx

Tuy nhiên trong một số trường hợp, chúng ta muốn lặp lại dữ liệu đó mà không muốn trả nó trong phần từ Jsx.

Một mẹo ít được biết đến có thể lặp lại một tập dữ liệu là React fragment

import React from 'react' export default function App() { const users = [ { id: 1, name: "Reed" }, { id: 2, name: "John" }, { id: 3, name: "Jane" } ]; return users.map((user) => ( <React.Fragment key={user.id}>{user.name}</React.Fragment> ));
}

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Virtual DOM trong React

Nếu bạn đang dùng React hoặc đang học ReactJS, chắc hẳn bạn đã nghe qua thuật ngữ Virtual DOM . Vậy Virtual DOM là gì và tại sao React lại sử dụng nó. Chúng ta hãy cùng tìm hiểu nhé. Let's go.

0 0 477

- vừa được xem lúc

10 câu hỏi phỏng vấn React cơ bản dành cho các developer

1. Ưu nhược điểm của React. Ưu điểm:. .

0 0 99

- vừa được xem lúc

Tìm hiểu về ESlint và cách cấu hình trong React

Eslint là gì . vậy Eslint được tạo ra để làm gì .

0 0 320

- vừa được xem lúc

Hướng dẫn cấu hình ReactJS với Webpack và Babel

Ok trong bài viết này, mình sẽ hướng dẫn các bạn cấu hình dự án ReactJS kết hợp Webpack và Babel. Bài viết này được thực hiện năm 2021 được cấu hình trên Webpack 5, như các bạn biết thì các bài viết c

0 0 135

- vừa được xem lúc

Tìm hiểu về Reactjs căn bản

Chắc hẳn "React" đã không còn là từ mới lạ đối với các bạn nữa vì sự phổ biến của nó, đã có nhiều "đàn anh" đi trước như : Angular, Backbone,... Thế nhưng sự cạnh tranh của React là không hề kém cạnh,

0 0 51

- vừa được xem lúc

Todo Reactjs và thay đổi Location

Giới thiệu. Reatcjs là một thư viện JavaScript front-end mã nguồn mở và miễn phí để xây dựng giao diện người dùng hoặc các thành phần UI.

0 0 38