Javascript 如何在react中使用useffect挂钩?

Javascript 如何在react中使用useffect挂钩?,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我想从usehook返回一个使用useEffect的函数,在一个既不是react函数组件也不是自定义钩子的函数中调用“useEffect”时出错 我想做什么 我有addbutton组件,当用户单击addbutton时,我想调用函数requestDialog 下面是我在addbutton文件中的代码 功能添加按钮(){ const count=useGetCount(); const requestDialog=useRequestDialog();//在此处使用usehook 添加上的常量单击=

我想从usehook返回一个使用useEffect的函数,在一个既不是react函数组件也不是自定义钩子的函数中调用“useEffect”时出错

我想做什么

我有addbutton组件,当用户单击addbutton时,我想调用函数requestDialog

下面是我在addbutton文件中的代码

功能添加按钮(){
const count=useGetCount();
const requestDialog=useRequestDialog();//在此处使用usehook
添加上的常量单击=()=>{
requestDialog(计数);//在此处调用requestDialog
}
返回(
添加
);  
}
界面上下文道具{
触发器:(计数:数字)=>无效;
}
const popupContext=React.createContext({
触发器:(AvailablesItemShares:number)=>{},
});
const usePopupContext=()=>React.useContext(popupContext);
export const popupContextProvider=({children}:any)=>{
const[show,setShow]=React.useState(false);
常数极限=0;
const dismise=()=>{
如果(显示){
setItem(somePopupId,'disposed');
设置显示(假);
}
};
const isDismissed=(dialogId:string)=>
sessionStorage.getItem(dialogId)==“已解除”;
常量上下文={
触发器:(计数:数字)=>{
如果(!isDismissed(somePopupId)&计数限制){
设置显示(假);
}
},
};
返回(
{儿童}
{show&&(
)}
);
};
导出函数UserRequestDialog(已启用:布尔,计数:数字){
返回函数requestDialog(){//错误如下
const{trigger}=usePopupContext();
React.useffect(()=>{
触发器(计数);
}
},[计数,触发器];
}
如何解决在既不是react函数组件也不是自定义挂钩的函数中调用“useEffect”的错误

我不知道如何使用useeffect,同时在addbutton组件中使用它


有人能帮我吗。谢谢

useffect方法类似于,
useffect(()=>{},[])
,但是您在requestDialog中的用法是错误的。试着用以下方法改变

function requestDialog() {
  const { trigger } = usePopupContext();
  React.useEffect(() => {
    trigger(count);
  }, [count, trigger]);
}

谢谢,但还是一样。我应该在usehook或Functional组件中使用useeffect吗。在这种情况下,如何改变它。我认为你应该考虑改变你的方法,以达到你所需要的。你不能在react之外创建useEffectcomponent@Lhew当前位置请告诉我如何更好地更改代码。谢谢。这是语法错误吗?你的
useRequestDialog
在我看来很奇怪。我对使用钩子和寻求帮助还不熟悉。我认为代码可以做得更好。指引我,谢谢。