Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 如何控制useState的返回类型_Reactjs_Typescript_React Hooks - Fatal编程技术网

Reactjs 如何控制useState的返回类型

Reactjs 如何控制useState的返回类型,reactjs,typescript,react-hooks,Reactjs,Typescript,React Hooks,我只想把状态改为工作或离开。 我尝试使用useState,但它返回void类型。如何返回布尔类型? 我是打字机初学者,请帮帮我 import React, {useState, useCallback} from 'react'; import MainHeader from 'components/UI/Main/MainHeader'; interface MainHeaderState { working: boolean, } const MainHeaderContainer

我只想把状态改为工作或离开。 我尝试使用useState,但它返回void类型。如何返回布尔类型? 我是打字机初学者,请帮帮我

import React, {useState,  useCallback} from 'react';
import MainHeader from 'components/UI/Main/MainHeader';

interface MainHeaderState {
   working: boolean,
}
const MainHeaderContainer:React.FC<MainHeaderState> = () =>{

    const [working, setWorking] = useState(false);
    const onWorking = useCallback(() => {
        return setWorking(true);
    }, [])

    const onLeaving = useCallback(() =>  {
        return setWorking(false)
    } ,[])

    return (
      <MainHeader
        working = {onWorking}
        leaving = {onLeaving}
      />
    );
}
export default MainHeaderContainer
import React,{useState,useCallback}来自“React”;
从“组件/UI/Main/MainHeader”导入MainHeader;
接口MainHeaderState{
工作:布尔,
}
const MainHeaderContainer:React.FC=()=>{
const[working,setWorking]=useState(false);
const onWorking=useCallback(()=>{
返回setWorking(真);
}, [])
const onLeaving=useCallback(()=>{
返回设置工作(假)
} ,[])
返回(
);
}
导出默认MainHeaderContainer

不要使用
return
关键字

试试这个:-

import React, {useState,  useCallback} from 'react';
import MainHeader from 'components/UI/Main/MainHeader';

const MainHeaderContainer:React.FC = props =>{

    const [working, setWorking] = useState(false);
    const onWorking = useCallback(() => {
        setWorking(true);
    }, [])

    const onLeaving = useCallback(() =>  {
        setWorking(false)
    } ,[])

    return (
      <MainHeader
        working = {onWorking}
        leaving = {onLeaving}
      />
    );
}
export default MainHeaderContainer
import React,{useState,useCallback}来自“React”;
从“组件/UI/Main/MainHeader”导入MainHeader;
const MainHeaderContainer:React.FC=props=>{
const[working,setWorking]=useState(false);
const onWorking=useCallback(()=>{
设置工作(真);
}, [])
const onLeaving=useCallback(()=>{
设置工作(假)
} ,[])
返回(
);
}
导出默认MainHeaderContainer
MainHeader组件:-

import React from 'react';
import classes from './MainHeader.module.scss';
import { NavLink } from 'react-router-dom';
import Button from 'components/UI/Button'

interface MainHeaderProps {
  working:() => void;
  leaving:() => void;
}
const MainHeader: React.FC<MainHeaderProps> = props => {
  return (
    <div className = {classes.HeaderWrapper}>
      <div className = {classes.Search}>
        <input type = "text" placeholder = "Search...."/>
      </div>
      <div className = {classes.Navbar}>
        <nav>
        <span><NavLink exact to = '/notice'>notice</NavLink></span>
        </nav>
        <Button btnType = 'working' clicked = {props.working} btnValue = "working"/>
        <Button btnType = 'leaving' clicked = {props.leaving} btnValue = "leaving"/>
      </div>
    </div>
  )
}
export default MainHeader;
从“React”导入React;
从“/MainHeader.module.scss”导入类;
从'react router dom'导入{NavLink};
从“组件/UI/按钮”导入按钮
接口MainHeaderProps{
工作:()=>无效;
离开:()=>无效;
}
const MainHeader:React.FC=props=>{
返回(
注意
)
}
导出默认主标题;
问题在于
main标题的道具类型与传递的值不匹配。您正在向它传递一个函数,它需要一个布尔值(请检查
MainHeader
组件)。因此,我只是简单地将道具类型更改为功能,现在应该可以使用了。

  • 这是主标题组件
从“React”导入React;
从“/MainHeader.module.scss”导入类;
从'react router dom'导入{NavLink};
从“组件/UI/按钮”导入按钮
接口MainHeaderProps{
工作:布尔,
离开:布尔值
}
const MainHeader:React.FC=(工作、离开)=>{
返回(
注意
)
}
导出默认主标题;

您能解释更多吗?我们帮不了你多少忙。请详细解释问题。const setWorking:(value:React.SetStateAction)=>void//我想在
const onWorking
中保存布尔类型的true,但setWorking正在返回void类型。。。。因此绑定时发生类型错误。请共享
的代码。好的,我已经发布了代码。您可以检查更新的答案吗?让我知道它是否更清晰。此外,下次如果你想提供更多细节,只需编辑你的问题,而不是将其添加为答案。因为这对一些观众来说是一种误导。。。。。哇,非常感谢:)因为你,我可以睡得很好。我建议删除这个答案,并将其添加到问题本身中。
import React from 'react';
import classes from './MainHeader.module.scss';
import { NavLink } from 'react-router-dom';
import Button from 'components/UI/Button'

interface MainHeaderProps {
  working: boolean,
  leaving: boolean
}
const MainHeader: React.FC<MainHeaderProps> = (working,leaving) => {
  return (
    <div className = {classes.HeaderWrapper}>
      <div className = {classes.Search}>
        <input type = "text" placeholder = "Search...."/>
      </div>
      <div className = {classes.Navbar}>
        <nav>
        <span><NavLink exact to = '/notice'>notice</NavLink></span>
        </nav>
        <Button btnType = 'working' clicked = {working} btnValue = "working"/>
        <Button btnType = 'leaving' clicked = {leaving} btnValue = "leaving"/>
      </div>
    </div>
  )
}
export default MainHeader;