Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React hooks-导出的方法返回为布尔值_Javascript_Reactjs_Typescript_React Hooks - Fatal编程技术网

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需要在某处键入?。。。