我正在尝试提供以前状态的功能作为参数,以便可以在单个更新周期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);
}
};
只是感到困惑,有好奇吗?
答案 0 :(得分:0)
TypeScript试图警告您为函数定义了一个参数,但从未使用过它。通常,编写执行此操作(忽略显式定义的参数)的代码是错误的。
这次,使用您的代码,这不是一个错误,并且您知道。您可以通过不定义参数来解决此问题:
setOpen(() => index);
或者在参数前面加上_
,告诉TypeScript“是的,我知道此参数未被使用,这不是错误”:
setOpen(_isOpen => index);