Một hiệu ứng / một tác dụng phụ là gì?
Các thuật ngữ hiệu ứng phụ và hiệu ứng được sử dụng thay thế cho nhau và có nghĩa giống nhau trong React: chúng đề cập đến các hoạt động không ảnh hưởng đến giao diện người dùng hoặc giá trị đầu ra. Nếu hoạt động bạn đang thực hiện đang quản lý bất kỳ thay đổi trạng thái khác hơn là giá trị trả về cuối cùng, sau đó nó là một tác dụng phụ!
Chức năng của một thành phần React là xử lý kết xuất và thao tác trên giao diện người dùng. Bởi vì các hiệu ứng phụ không ảnh hưởng đến giai đoạn kết xuất, chúng không nằm trong phần chính của một thành phần.
Là useEffectgì?
useEffect là một React Hook cho phép bạn chạy các hiệu ứng phụ độc lập với việc kết xuất.
Nếu bạn có các phần mã của mình không liên quan trực tiếp đến giao diện người dùng hoặc các tác vụ không đồng bộ và thực thi bên ngoài luồng điều khiển thông thường, bạn nên đặt chúng bên trong useEffecthook. Điều này cho phép chúng hoạt động bên ngoài chu kỳ kết xuất và hoạt động ở hậu trường mà không can thiệp vào giao diện người dùng.
useEffect chấp nhận hai đối số:
Ví dụ về các phép tính không phụ thuộc vào kết xuất và nên nằm trong useEffecthook:
fetch);import { useEffect } from 'react'useEffect(() => { logic }, [dependencies]);
Hãy xem cách useEffecthoạt động. Trong ví dụ này, chúng tôi đang lấy thông tin người dùng từ cơ sở dữ liệu sau khi loggedIntrạng thái cập nhật lên truevà sau đó chúng tôi in thông tin đó lên trang:
import { useState, useEffect } from 'react';
function App() {
const [loggedIn, setLoggedIn] = useState(false);
const [userName, setUserName] = useState("");
useEffect( () => {
if (loggedIn === true) {
// [ retrieving user info from an imaginary database ]
// [ we set the returned user info in state ]
setUserName("Lisa Simpson");
} else {
setUserName("");
}
}, [loggedIn]);
return (
<div>
<h1>Hello</h1>
<button onClick={ () => setLoggedIn(!loggedIn) } >Log in / out</button>
{
loggedIn === true
? <p>Hello, {userName}</p>
: <p>Please log in</p>
}
</div>
)
};
export default App;
ifcâu lệnh kiểm tra cơ sở dữ liệu tưởng tượng để xem liệu người dùng có loggedIn. Nếu có, chúng tôi cập nhật trạng thái của userName. (Đổi lại, chúng tôi có logic để hiển thị tên của họ trên màn hình nếu loggedIn === true.)loggedIntrạng thái được cập nhật bằng cách sử dụng setLoggedInchức năng.useEffectchạy mỗi khi loggedIntrạng thái thay đổi, bởi vì chúng tôi đã vượt qua loggedInnhư một phụ thuộc.useEffectkhông không chạy khi setUserNamechức năng chạy, bởi vì chúng tôi đã không đặt nó trong mảng phụ thuộc.Sự phụ thuộc là cách chúng tôi kiểm soát khi useEffectchạy.
useEffectchạy trên mọi kết xuất, hãy bỏ qua các phần phụ thuộc.propshoặc statecác giá trị, bạn phải khai báo những giá trị này dưới dạng phụ thuộc; khi các giá trị này thay đổi, useEffectsẽ chạy. (Trong ví dụ trên, bạn có thể bỏ qua setUserNamehàm khỏi các phần phụ thuộc vì nó không phải là một giá trị trạng thái - đó là một hàm cập nhật giá trị trạng thái, vì vậy nó sẽ không bao giờ không đồng bộ với trạng thái.)Một số tác dụng phụ - như bộ hẹn giờ hoặc đăng ký (kết nối với nguồn dữ liệu liên tục) - yêu cầu xóa sạch, vì chúng tôi không muốn chúng trôi nổi sau khi thành phần bị xóa khỏi DOM.
Để dọn dẹp, chúng ta chỉ cần trả về một hàm bên trong useEffectvà nó sẽ dọn dẹp; các chức năng này được gọi một cách thích hợp cleanup functions. Các chức năng dọn dẹp này chạy sau lần hiển thị tiếp theo, nhưng trước lần hiển thị tiếp theo useEffect.
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.
Hôm qua, chúng ta đã khép lại cuộc thi Ca khúc Eurovision năm nay bằng một đêm chung kết hoành tráng, hỗn loạn, nơi ca sĩ người Thụy Điển Loreen đã mang về chiếc cúp, trở thành người phụ nữ đầu tiên giành chiến thắng hai lần và mang vương miện về cho Thụy Điển 50 năm sau khi ABBA giành chiến thắng trong cuộc thi với “Waterloo”. Họ tiếp tục trở thành một trong những nghệ sĩ lớn nhất trong thể loại nhạc pop.
Gần đây, tôi đã truy cập Linkedin, mạng xã hội chuyên nghiệp lớn nhất thế giới và tìm thấy các bài đăng của các nhà thiết kế tự do mà tôi theo dõi, những người đã thu hút sự chú ý của tôi. Tất cả họ đều đăng ảnh chụp từ máy bay, trên bãi biển với máy tính xách tay của họ, từ bể bơi và văn phòng với những khung cảnh tuyệt vời.
[Cảnh báo kích hoạt: Bài tiểu luận này bao gồm các bức ảnh chụp màn hình những người ca ngợi kẻ giết Jordan Neely.] Các quan chức thực thi pháp luật cuối cùng - và có lẽ miễn cưỡng - đã buộc tội Daniel Penny, kẻ đã bóp cổ Jordan Neely cho đến chết, vì tội giết người đó.
Để tránh sự mơ hồ, các thuật ngữ sau đây sẽ được sử dụng; Trình xác thực; Điện thoại di động được sử dụng để đăng nhập Website; Trang web hoặc ứng dụng mà người dùng đang sử dụng để thực hiện yêu cầu đăng nhập Dịch vụ; Nhà cung cấp cung cấp dịch vụ nhất định, ví dụ: