Trong quá trình chuyển đổi từ sử dụng React với JavaScript sang TypeScript, điều tôi gặp khó khăn nhất là gõ chính xác các hook của mình và chuyển chúng xuống làm đạo cụ.
Làm thế nào mà một thứ rất đơn giản trong JavaScript lại có thể gây cho tôi quá nhiều rắc rối trong TypeScript ?!
Với bài viết này, tôi hy vọng sẽ giúp bạn tiết kiệm được cơn đau đầu mà tôi đã phải trải qua trước khi tìm ra cách chúng hoạt động!
Điều đầu tiên là đầu tiên:
Khi chúng ta tạo một hook, chúng ta cần truyền vào kiểu mà chúng ta mong đợi nó tuân theo:
const [title, setTitle] = useState<string>(“”);
const [amount, setAmount ] = useState<number>(0);
const [Selected, setSelected] = useState<boolean>(false);
Đầu tiên, chúng ta cần tạo một kiểu xác định đối tượng của chúng ta trông như thế nào. Giả sử chúng tôi đang cố gắng lưu trữ thông tin của một người.
type Person = {
name: string;
address: string;
married: boolean;
}
const [person, setPerson] = useState<Person>({
name: “”,
address: “” ,
married: false
})
Điều gì sẽ xảy ra nếu chúng ta muốn tạo một hook chứa nhiều người?
Điều đó thật đơn giản:
const [people, setPeople] = useState<person[]>([])
Tất cả điều kỳ diệu xảy ra khi chúng ta nhập đạo cụ mà thành phần con TypeScript của chúng ta mong đợi nhận được. Đây là lúc hai người bạn thân nhất của chúng ta là React.Dispatch và React.SetStateAction phát huy tác dụng.
Khi chúng ta gọi một hook setState trong một thành phần con, React sẽ gửi một SetStateAction. Công việc của chúng tôi rất đơn giản: Chúng tôi cần cung cấp kiểu xác định thông tin bên trong SetStateAction trông như thế nào.
type Props = {
people: people[];
setPeople: React.Dispatch<React.SetStateAction<people[]>>;
title: string;
setTitle: React.Dispatch<React.SetStateAction<string>>;
}
const ChildComponent: React.FC<Props> = ({people, setPeople, title, setTitle}) => { }
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.
Tuần này, tôi nhận được một email từ một thành viên trong danh sách email hàng ngày. Họ muốn biết: Bạn truy cập tài nguyên nào hàng ngày, hàng tuần và hàng tháng? Câu hỏi tuyệt vời! Tôi rất vui khi cố gắng chia sẻ một số thông tin chi tiết về quy trình làm việc của mình và các tài nguyên hàng đầu mà tôi sử dụng.
Tay tôi ngứa ngáy lan rộng khi tôi mặc cả với người bán sách địa phương để mua một cuốn sách khác. Cuốn sách này giống như những cuốn còn lại mà tôi đã mua gần đây sẽ lên ngôi trong đống 'Cần đọc' (TBR) của tôi; tuy nhiên, tôi đã mua nó.
Nếu chúng ta muốn tiếp tục phát triển trên hành tinh này, chúng ta sẽ phải có những cuộc đối thoại nguy hiểm. Những thứ thách thức những gì chúng ta đã làm, những gì chúng ta đang làm và những gì chúng ta hiện đang chuẩn bị tiếp tục làm (hoặc đang có kế hoạch làm).
Đó là một buổi sáng vàng rực rỡ trên những ngọn đồi thoai thoải ở phía tây, khi những tia nắng đầu tiên chiếu sáng ngọn cỏ phủ sương trên đồng bằng. Một đàn gia súc Angus điềm đạm, đen tuyền và to lớn, in bóng dưới ánh bình minh khi chúng đi xuống con đường mòn bị đánh đập đến một địa phương mà tất cả chúng đều biết rõ; quán ăn sáng.
Xin chào, những người đam mê mạng! Chào mừng bạn quay trở lại OSINT cho loạt bài săn tìm mối đe dọa. Trong bài viết đầu tiên, tôi đã cung cấp cho bạn cái nhìn tổng quan về OSINT và tầm quan trọng của nó trong việc tìm kiếm mối đe dọa.