【发布时间】:2020-09-26 08:25:01
【问题描述】:
我正在尝试在 React 中使用钩子。钩子应该给我一个布尔值和一个回调。当回调被调用时,布尔值应该改变值。 当我尝试检索值和回调时,出现错误。
类型
(boolean | (() => void))[]上不存在属性isEnabled。上线const {isEnabled, toggleCallback} = useToggle();
我做错了什么?
function toggleCallback(toggleCallback: () => void) {
toggleCallback();
}
export default function FakePage(props: any) {
const {isEnabled, toggleCallback} = useToggle();
return (
<div>
<ComponentOne isEnabled={isEnabled}/>
<button onClick={() => testToggle(toggleCallback)}>Test</button>
</div>
);
}
// hook
export default function useToggle() {
let isEnabled: boolean = true;
const toggleCallback= useCallback(() => {
isEnabled = !isEnabled;
}, [isEnabled]);
return [isEnabled, toggleCallback];
}
【问题讨论】:
-
您正在从钩子返回数组,但您将其作为对象破坏。从回调中删除方括号并添加大括号或将组件中的大括号更改为方括号
-
值得注意的是,你应该在你的钩子中使用 useState() 来实现 isEnabled。此外,您可能不需要 useCallback,因为当 isEnabled 为 true 和 false 时,它的工作方式相同。
标签: javascript reactjs typescript react-hooks