挂钩(批量更新周期)- 语义错误 TS6133:已声明“”但从未读取其值
Hooks (Batched update cycle) - semantic error TS6133: '' is declared but its value is never read
我正在尝试提供先前状态的函数作为参数,以便状态更新可以在单个更新周期中进行批处理 isOpen => index
但抛出 semantic error TS6133: 'isOpen' is declared but its value is never read
const initialState = -1;
const [isOpen, setOpen] = useState(initialState);
// Fails
const handleOpen = (index:number) => {
if(index !== isOpen) {
setOpen(isOpen => index);
} else {
setOpen(isOpen => initialState);
}
};
但这过去了
// Passes
const handleOpen = (index:number) => {
if(index !== isOpen) {
setOpen(index);
} else {
setOpen(initialState);
}
};
一头雾水,好奇吗?
TypeScript 试图警告您您为函数定义了一个参数,但后来从未使用过它。通常,编写执行此类操作(忽略显式定义的参数)的代码是错误的。
这次用你的代码,没有错,你也知道。您可以通过不定义参数来修复它:
setOpen(() => index);
或者通过在参数前加上 _
前缀,它告诉 TypeScript “是的,我知道这个参数没有被使用,这不是错误”:
setOpen(_isOpen => index);
我正在尝试提供先前状态的函数作为参数,以便状态更新可以在单个更新周期中进行批处理 isOpen => index
但抛出 semantic error TS6133: 'isOpen' is declared but its value is never read
const initialState = -1;
const [isOpen, setOpen] = useState(initialState);
// Fails
const handleOpen = (index:number) => {
if(index !== isOpen) {
setOpen(isOpen => index);
} else {
setOpen(isOpen => initialState);
}
};
但这过去了
// Passes
const handleOpen = (index:number) => {
if(index !== isOpen) {
setOpen(index);
} else {
setOpen(initialState);
}
};
一头雾水,好奇吗?
TypeScript 试图警告您您为函数定义了一个参数,但后来从未使用过它。通常,编写执行此类操作(忽略显式定义的参数)的代码是错误的。
这次用你的代码,没有错,你也知道。您可以通过不定义参数来修复它:
setOpen(() => index);
或者通过在参数前加上 _
前缀,它告诉 TypeScript “是的,我知道这个参数没有被使用,这不是错误”:
setOpen(_isOpen => index);