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

How to useMemo in React

0 0 6

Người đăng: khánh hoàng

Theo Viblo Asia

Mở đầu

Xin chào các bạn, mình đã quay trở lại đây, bài trước mình có giới thiệu về react-query sử dụng useQuery để tương tác với API nhanh gọn hơn.Các bạn có thể đọc lại bài của mình ở đây ??

Lần này mình sẽ chia sẻ cho các bạn mộ hook hay được dùng trong Reactjs. Hy vọng sẽ giúp được cho các bạn hiểu thêm hơn về Reactjs.Ok, bây giờ chúng ta bắt đầu.

Nội dung

useMemo giúp tối ưu hóa, optimize việc render giống như shouldComponentUpdate và chỉ khác là hook này nằm trong function component, và có sự khác là hook này cần phải truyền vào tham số để so sánh, quyết định khi nào render, khi bạn không truyền tham số thì n mặc định chạy luôn.

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

a.b là tham số truyền vào để so sánh.

useMemo trả về một giá trị được ghi nhớ. useMemo sẽ chỉ tính toán lại giá trị đã ghi nhớ khi một trong các thành phần phụ thuộc thay đổi. Tối ưu hóa này giúp tránh các tính toán tốn kém trên mỗi lần hiển thị. VD: Hiển thị danh sách người dùng và cho phép filter theo tên.

import React, { useState } from 'react'; const users = [ { id: 'a', name: 'test1' }, { id: 'b', name: 'test2' },
]; const App = () => { const [text, setText] = useState(''); const [search, setSearch] = useState(''); const handleText = ({ target: { value } }) => { setText(value); }; const handleSearch = () => { setSearch(text); }; const filteredUsers = users.filter((user) => { return user.name.toLowerCase().includes(search.toLowerCase()); }); return ( <div> <input type="text" value={text} onChange={handleText} /> <button type="button" onClick={handleSearch}> Search </button> <List list={filteredUsers} /> </div> );
}; const List = ({ list }) => { return ( <ul> {list.map((item) => ( <ListItem key={item.id} item={item} /> ))} </ul> );
}; const ListItem = ({ item }) => { return <li>{item.name}</li>;
}; export default App;

Khi người dùng nhập vào ô input và bấm vào button thì hàm filteredUsers mới được thực thi và chạy đi chạy lại khi mỗi lần bấm vào nút button.

Tuy nhiên, khi chúng ta xử lý một bộ dữ liệu lớn trong mảng này và chạy hàm filteredUsers cho mỗi lần bấm button, có thể sẽ làm chậm ứng dụng của bạn.

Do đó, chỗ này bạn có thể dùng useMemo để ghi nhớ các hàm trả về giá trị và chỉ chạy một lần khi biến search thay đổi. Hàm filteredUsers mình sẽ sửa lại như sau

import React, { useMemo } from 'react'; ... const filteredUsers = useMemo( () => users.filter((user) => { console.log('Filter function is running ...'); return user.name.toLowerCase().includes(search.toLowerCase()); }), [search] ); ...

Bây giờ, hàm này chỉ chạy khi biến search thay đổi. Biến không thay đổi thì hàm sẽ không chạy Đọc đến đây, các bạn có thấy hook này hay không, nó khá là tiện ích khi chúng ta muốn cho một hàm nào đó chạy khi biến thay đổi.

Tóm lại, useMemo Hook của React được sử dụng để ghi nhớ các giá trị. Và các bạn cân nhắc bài toán của mình khi sử dụng hook này nhé.

Mình dừng bài viết ở đây nhé. Cảm ơn các bạn đã đọc bài của mình và hẹn các bạn ở các bài viết tiếp theo ??

Bình luận

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

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

Cùng tìm hiểu về các hook trong React hooks

Đối với ai đã từng làm việc với React thì chắc hẳn đã có những lúc cảm thấy bối rối không biết nên dùng stateless (functional) component hay là stateful component. Nếu có dùng stateful component thì cũng sẽ phải loay hoay với đống LifeCycle 1 cách khổ sở Rất may là những nhà phát triển React đã kịp

0 0 83

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

Khi nào nên (và không nên) sử dụng Redux

. Công việc quản lý state với những hệ thống lớn và phức tạp là một điều khá khó khăn cho đến khi Redux xuất hiện. Lấy cảm hứng từ design pattern Flux, Redux được thiết kế để quản lý state trong các project JavaScript.

0 0 109

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

ReactJS: Props và State

Nếu bạn đã học ReactJS hay React Native, bạn sẽ thấy các Props và State được sử dụng rất nhiều. Vậy chính xác chúng là gì? Làm thế nào để chúng ta sử dụng chúng đúng mục đích đây.

0 0 45

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

State và Props trong Reactjs

Hello các bạn, tiếp tục seri tìm hiểu về ReactJs hôm nay mình xin giới thiệu đến các bạn hai thứ mình cho là thú vị nhất của ReactJs là State và Props. State bạn có thể hiểu đơn giản là một nơi mà bạn lưu trữ dữ liệu của Component, từ đó bạn có thể luân chuyển dữ liệu đến các thành phần trong Compon

0 0 39

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

Memoization trong React

. 1.Introduction. Memoization có liên quan mật thiết đến bộ nhớ đệm, và dưới đây là một ví dụ đơn giản:. const cache = {}.

0 0 40

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

Nâng cao hiệu suất React Hooks với React.memo, Memoization và Callback Functions

1.Ngăn Re-render và React.memo. React.

0 0 69