Javascript React hooks-导出的方法返回为布尔值
我有一个简单的自定义挂钩,用于一些切换功能:Javascript React hooks-导出的方法返回为布尔值,javascript,reactjs,typescript,react-hooks,Javascript,Reactjs,Typescript,React Hooks,我有一个简单的自定义挂钩,用于一些切换功能: import { useState } from 'react'; function useDialog(initialState: boolean) { const [isOpen, toggleDialog] = useState<boolean>(initialState); const open = () => { toggleDialog(true); }; const
import { useState } from 'react';
function useDialog(initialState: boolean) {
const [isOpen, toggleDialog] = useState<boolean>(initialState);
const open = () => {
toggleDialog(true);
};
const close = () => {
toggleDialog(false);
};
return [isOpen, open, close];
}
export default useDialog;
从'react'导入{useState};
函数useDialog(初始状态:布尔){
const[isOpen,toggleDialog]=useState(initialState);
常量打开=()=>{
切换对话框(true);
};
常数关闭=()=>{
切换对话框(假);
};
返回[isOpen,打开,关闭];
}
导出默认对话框;
我尝试在某些组件中重用它:
const SomeDialog = (props: any) => {
const [isOpen, open, close] = useDialog(false);
console.log('open :>> ', typeof open); // here is function type
return (
<div>
<button onClick={open}>open</button> // ERRROR! -> Type 'false' is not assignable
</div>
);
};
export { SomeDialog };
constsomedialog=(道具:any)=>{
const[isOpen,open,close]=useDialog(false);
log('open:>>',typeof open);//这里是函数类型
返回(
open//error!->类型“false”不可赋值
);
};
导出{SomeDialog};
为什么onClick会出错<代码>类型“false”不可赋值以及如何正确修复它?尝试键入函数而不是值
type Hook = (initialState: boolean) => [boolean, () => void, () => void];
const useDialog: Hook = initialState => {...}
没有它,open
用boolean |(()=>void)
类型引用,这与React.MouseEvent
类型的onClick
不兼容
尝试键入函数而不是值
type Hook = (initialState: boolean) => [boolean, () => void, () => void];
const useDialog: Hook = initialState => {...}
没有它,open
用boolean |(()=>void)
类型引用,这与React.MouseEvent
类型的onClick
不兼容
您需要像这样将键入内容添加到自定义钩子中
function useDialog(initialState: boolean):[boolean,() => void,() => void] {
const [isOpen, toggleDialog] = useState<boolean>(initialState);
const open = () => {
toggleDialog(true);
};
const close = () => {
toggleDialog(false);
};
return [isOpen, open, close];
}
函数使用对话框(初始状态:布尔):[boolean,()=>void,()=>void]{
const[isOpen,toggleDialog]=useState(initialState);
常量打开=()=>{
切换对话框(true);
};
常数关闭=()=>{
切换对话框(假);
};
返回[isOpen,打开,关闭];
}
您需要像这样将键入内容添加到自定义钩子中
function useDialog(initialState: boolean):[boolean,() => void,() => void] {
const [isOpen, toggleDialog] = useState<boolean>(initialState);
const open = () => {
toggleDialog(true);
};
const close = () => {
toggleDialog(false);
};
return [isOpen, open, close];
}
函数使用对话框(初始状态:布尔):[boolean,()=>void,()=>void]{
const[isOpen,toggleDialog]=useState(initialState);
常量打开=()=>{
切换对话框(true);
};
常数关闭=()=>{
切换对话框(假);
};
返回[isOpen,打开,关闭];
}
我没有收到任何错误。您是在键入错误还是在单击按钮时出错?donno,也许typescript需要在某处键入?…我没有收到任何错误。您是在键入错误还是在单击按钮时出错?donno,也许typescript需要在某处键入?。。。