Xin chào các bạn, trong phần hướng dẫn này, tôi sẽ chỉ cho các bạn mọi thứ bạn cần biết để sử dụng hàm useEffect của React như một người chuyên nghiệp.
Trước khi có useEffect , có các phương pháp vòng đời, cụ thể là:
componentDidUpdate(prevProps, prevState) {
if (prevProps.foo !== this.props.foo) {/* do something */}
if (prevState.bar !== this.state.bar) {/* do something else */}
}
Với các phương thức vòng đời này, chúng ta có thể xử lý một cách đáng tin cậy bất kỳ thay đổi nào đối với trạng thái của thành phần, vậy tại sao lại thay đổi thành useEffect ?
Tại một thời điểm (tôi tin là vào đầu năm 2016), nhóm React đã đưa ra quyết định tạo ra các thành phần React có thể được khởi tạo chỉ với một hàm Javascript thông thường, cũ kỹ. Vì thế:
import React from "react";
function MyFunc() {
return <div>Hey!</div>
}
Cách tiếp cận mới để quản lý các thay đổi trạng thái xuất hiện dưới dạng một hàm useEffect được đưa ra bởi thư viện React. Vậy làm cách nào để tạo lại các phương thức componentDidMount , componentDidUpdate và componentWillUnmount yêu thích của chúng ta ? Hãy mở rộng chức năng không trạng thái trước đó của chúng tôi:
import React from "react";
function MyFunc(props) {
const [bar setBar] = React.useState(null);
React.useEffect(() => {
console.log("componentDidMount");
return () => {
console.log("componentDidUnmount")
}
}, []);
React.useEffect(() => {
console.log("componentDidUpdate when 'bar' changes");
}, [bar]);
React.useEffect(() => {
console.log("componentDidUpdate when 'props.foo' changes");
}, [props.foo]);
return <div>Hey!</div>
}
Một điều khác mà chúng tôi đã thêm vào ví dụ này, React.useState, một trạng thái hook, nằm ngoài phạm vi của hướng dẫn này, nhưng hãy tìm hiểu thêm về nó tại đây !
Thật tuyệt khi chúng ta có thể quản lý trạng thái của một thành phần cũng như với các phương thức vòng đời trước đó. Giữa sự đơn giản và khả năng tái sử dụng của các hàm không trạng thái và hàm React.useEffect, một mô hình mới đã có sẵn cho chúng ta: các hàm trạng thái có thể tái sử dụng, hay thường được đặt tên hơn: móc tùy chỉnh .
Một độc giả hiểu biết như bạn có thể nhận thấy rằng với useEffect, chúng ta không thể truy cập thuộc tính prevProps hoặc prevState như chúng ta có thể làm trước đây. Đừng sợ! Đọc giải pháp cho điều đó ở đây . Lý do giải pháp này hoạt động là vì React.useRef không kích hoạt kết xuất của thành phần. Ngoài ra, useEffect không có phụ thuộc kích hoạt mỗi khi có kết xuất lại thành phần bất kể thay đổi trạng thái nào đã kích hoạt nó.
Thực sự không có ví dụ cơ sở nào tốt hơn cho hook tùy chỉnh hơn ví dụ mà React chia sẻ trong tài liệu chính thức của họ ở đây . Hãy bắt đầu ở cuối ví dụ và di chuyển lên trên:
function FriendListItem(props) {
const isOnline = useFriendStatus(props.friend.id);
return (
<li style={{ color: isOnline ? 'green' : 'black' }}>
{props.friend.name}
</li>
);
}
import React, { useState, useEffect } from 'react';
function useFriendStatus(friendID) {
const [isOnline, setIsOnline] = useState(null);
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
useEffect(() => {
ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
return () => {
ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
};
});
return isOnline;
}
Trong hướng dẫn này, chúng tôi đã xem xét:
Giới thiệu Đột quỵ là một trường hợp cấp cứu y tế có thể tấn công bất kỳ ai vào bất kỳ lúc nào. Nó xảy ra khi lưu lượng máu đến một phần của não bị gián đoạn, dẫn đến mất chức năng não đột ngột.
Bắt tay vào một hành trình đổi mới và thành công ly kỳ khi bạn khai thác tiềm năng chưa được khai thác của các nền tảng không mã đáng ngạc nhiên này. Để tôi chia sẻ với bạn một câu chuyện về Sapna, một nữ doanh nhân xuất sắc.
Chuyển sang một nghề nghiệp mới có thể cực kỳ khó khăn nếu bạn cố gắng làm điều đó một mình. Điều quan trọng là phải tìm được những đối tác có trách nhiệm, những người có cùng trình độ học vấn với bạn, những người có chung mục tiêu, sự kiên trì và động lực.
Khi bạn gửi yêu cầu tới facebook.com, máy tính của bạn sẽ tra cứu tên miền để dịch tên miền đó thành địa chỉ IP để máy tính của bạn có thể thực hiện kết nối đó.
Trong thế giới có nhịp độ nhanh và cạnh tranh ngày nay, sự nghiệp của một người đóng một vai trò quan trọng trong sự phát triển cá nhân, ổn định tài chính và sự hài lòng trong cuộc sống nói chung. Tuy nhiên, nhiều cá nhân thấy mình bị mắc kẹt trong một chu kỳ trì trệ và không hài lòng không ngừng, dần dần lãng phí trong cuộc sống nghề nghiệp của họ.
Bất kỳ lý trí nào cũng biết rằng giới chính trị và truyền thông bị chi phối bởi cánh tả, thậm chí là cực tả, một tình trạng tạo ra sự mất cân bằng trong diễn ngôn chính trị. Trong lĩnh vực tôn giáo, sự mất cân bằng này có thể thấy rõ ràng: các tờ báo và mạng lưới cánh tả không vội vàng bảo vệ đức tin Cơ đốc.