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 异步自定义挂钩不执行';我们不能提供最新数据_Reactjs_React Hooks - Fatal编程技术网

Reactjs 异步自定义挂钩不执行';我们不能提供最新数据

Reactjs 异步自定义挂钩不执行';我们不能提供最新数据,reactjs,react-hooks,Reactjs,React Hooks,我有一个简单的钩子来帮助我处理POST请求。有了下面的代码,我希望unsub在帖子完成后会true。有人能指出我可能做错了什么吗 定制挂钩 const useusubscribeemail=()=>{ const[userId,setUserId]=useState(null); const[unsub,setUnSub]=useState(); const UNSUB_URL='/web注册表api/v1/reviews/unsubscription'; useffect(()=>{ 如果(用

我有一个简单的钩子来帮助我处理POST请求。有了下面的代码,我希望
unsub
在帖子完成后会
true
。有人能指出我可能做错了什么吗

定制挂钩

const useusubscribeemail=()=>{
const[userId,setUserId]=useState(null);
const[unsub,setUnSub]=useState();
const UNSUB_URL='/web注册表api/v1/reviews/unsubscription';
useffect(()=>{
如果(用户ID){
//异步POST调用
(异步()=>{
试一试{
等待ApiService.post(`UNSUB_URL}/${userId}`);
//更新unsub值
setUnSub(真);
}捕获(错误){
控制台错误(错误)
}
})();
}
},[userId]);
返回[unsub,setUserId];
};
导出默认使用取消订阅电子邮件;
组件

const ReviewUnsubscription=()=>{
const{userId}=useParams();
const[取消订阅,取消订阅电子邮件]=使用取消订阅电子邮件();
返回(
取消订阅电子邮件提醒以查看您从Zola收到的产品?{unsub}
{/*这里的不明嫌犯还没有定义*/}
{取消订阅电子邮件(userId);}}variant=“primary”className={styles.button}>取消订阅
);
};

在您单击该按钮之前,unsub仍将是未定义的,因为您尚未在钩子中为其设置默认状态。 更改:
const[unsub,setUnSub]=useState()
to
const[unsub,setUnSub]=useState(false)是我的建议


我在我这边测试,效果很好;但是,我无法测试APIService.post

unsub仍然是未定义的,直到您单击该按钮,因为您尚未在钩子中为其设置默认状态。 更改:
const[unsub,setUnSub]=useState()
to
const[unsub,setUnSub]=useState(false)是我的建议


我在我这边测试,效果很好;但是,我无法测试APIService.post

ApiService
呼叫是否未抛出?您是否验证了钩子中的状态设置是否正确?@Qwerty我再次重试我的实现,它现在可以工作了。谢谢你检查我的代码。这是一个很好的提醒,我应该始终在hook中声明
ApiService
调用是否未抛出?您是否验证了钩子中的状态设置是否正确?@Qwerty我再次重试我的实现,它现在可以工作了。谢谢你检查我的代码。这是一个很好的提醒,我应该始终在报告中声明感谢您测试我的代码。它确实有效。很抱歉在OP中澄清了这一点,
unsub
旨在更改点击事件。另外,我认为不明嫌犯在这种情况下不需要默认状态,因为
undefined
是虚假的。无论如何,谢谢你检查我的代码。谢谢你测试我的代码。它确实有效。很抱歉在OP中澄清了这一点,
unsub
旨在更改点击事件。另外,我认为不明嫌犯在这种情况下不需要默认状态,因为
undefined
是虚假的。无论如何,谢谢你检查我的代码。