reactjs - React Hooks - JSDoc với các biến mảng được phân rã
Tôi đang cố gắng sử dụng JSDoc cho một component React TypeScript đơn giản với hooks. Không may, tôi dường như không thể tìm ra cách nào để JSDoc hoạt động với các mảng được khai báo và phá hủy (destructured). Có một số câu trả lời liên quan đến việc phá hủy các tham số đối tượng, nhưng chúng không hoạt động với các mảng.
/**
* @property {boolean} 0 - documentation for isLoading
* @property {func} 1 - documentation for setIsLoading
*/
const [isLoading, setIsLoading] = React.useState<boolean>(false);
Cập nhật 1: Vẫn gặp khó khăn trong việc tìm cách ghi lại sự phân rã này. Có một trường hợp đặc biệt mà nếu tôi định kiểu tùy chỉnh một đối tượng, thì nó sẽ hoạt động:
export type AuthFormInput = {
/** Value of the Email input field */
email: string;
/** Value of the Password input field */
password: string;
};
const [form, setForm] = React.useState<AuthFormInput>({
email: '',
password: ''
});
...
// JSDoc will work here
const email = form.email;
Câu trả lời #1
Nó sẽ giúp:
/**
* @typedef {Boolean} LoadingState — documentation for isLoading
* @description Additional doc
*/
/**
* @typedef {Function} LoadingStateSetter — documentation for setIsLoading
*/
/**
* @type {[LoadingState, LoadingStateSetter]} Loading
*/
const [isLoading, setIsLoading] = React.useState();
Trong ví dụ này, chúng ta khai báo hai kiểu bổ sung: LoadingState và LoadingStateSetter. Sau đó, chúng ta thêm một số mô tả cho chúng và cuối cùng, chúng ta khai báo kiểu Loading cho kết quả của React.useState()
Bạn cũng có thể khai báo nó theo cách đơn giản hơn như sau:
/**
* @type {[Boolean, Function]} Loading
*/
const [isLoading, setIsLoading] = React.useState();
Nhưng tôi không tìm thấy cách nào để thêm mô tả trong trường hợp này.
Tôi đã kiểm tra mô tả về cách ghi chép như vậy trong VSCode
Câu trả lời #2
Bạn có thể thử cái này:
/** @type {boolean} */
const initialState = false
const [isLoading, setIsLoading] = React.useState(initialState)
