Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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
Reactjs Typescript中的自定义react钩子UseTokle_Reactjs_Typescript_React Hooks - Fatal编程技术网

Reactjs Typescript中的自定义react钩子UseTokle

Reactjs Typescript中的自定义react钩子UseTokle,reactjs,typescript,react-hooks,Reactjs,Typescript,React Hooks,我编写了用于切换布尔值和值的自定义钩子: import { useState } from 'react'; export function useToggle(initialValue: boolean) { const [value, setValue] = useState<boolean>(initialValue); const toggleValue = () => setValue(!value); return [value, toggleVa

我编写了用于切换布尔值和值的自定义钩子:

import { useState } from 'react';

export function useToggle(initialValue: boolean) {
  const [value, setValue] = useState<boolean>(initialValue);

  const toggleValue = () => setValue(!value);

  return [value, toggleValue];
}
但会出现错误:

类型“boolean |(()=>void)”不可分配给类型“boolean”| ((()=>void)和false)|((()=>void)和true)“”。键入“()=>void” 不可分配给类型“boolean |((()=>void)和false)(()=> void)&true。 类型“()=>void”不可分配给类型“(()=>void)&false”。 类型“()=>void”不可分配给类型“false”

const{useRef,useState}=React;
函数UseTokle(初始状态){
const[value,setValue]=使用状态(initialState);
const toggle=()=>{setValue(!value)};
返回[值,切换];
};
函数App(){
const[modal,setModal]=使用切换(false);
返回(
切换!
{模式和切换!!!!}
)
}
ReactDOM.render(
,document.getElementById('root'))
)

您可能需要定义钩子的返回类型。应该是这样的

从'react'导入{useState};
导出函数UseTokle(初始值:布尔):[boolean,()=>void]{
const[value,setValue]=使用状态(initialValue);
const-toggleValue=()=>setValue(!value);
返回[value,toggleValue];
}

这些脚本的作用是什么?我们为什么需要它们?那就是
作为CDN反应
!你不需要关心这些,你只需要看到关于你的代码,但是你没有改变任何东西,错误仍然存在there@heisenberg7584我刚刚用
{}
包装了
toggle()
。你喜欢它吗?
 const [modalOpen, setModal] = useToggle(false);