Reactjs 异步自定义挂钩不执行';我们不能提供最新数据
我有一个简单的钩子来帮助我处理POST请求。有了下面的代码,我希望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(()=>{ 如果(用
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()
toconst[unsub,setUnSub]=useState(false)代码>是我的建议
我在我这边测试,效果很好;但是,我无法测试APIService.post unsub仍然是未定义的,直到您单击该按钮,因为您尚未在钩子中为其设置默认状态。
更改:const[unsub,setUnSub]=useState()
toconst[unsub,setUnSub]=useState(false)代码>是我的建议
我在我这边测试,效果很好;但是,我无法测试APIService.post ApiService
呼叫是否未抛出?您是否验证了钩子中的状态设置是否正确?@Qwerty我再次重试我的实现,它现在可以工作了。谢谢你检查我的代码。这是一个很好的提醒,我应该始终在hook中声明ApiService
调用是否未抛出?您是否验证了钩子中的状态设置是否正确?@Qwerty我再次重试我的实现,它现在可以工作了。谢谢你检查我的代码。这是一个很好的提醒,我应该始终在报告中声明感谢您测试我的代码。它确实有效。很抱歉在OP中澄清了这一点,unsub
旨在更改点击事件。另外,我认为不明嫌犯在这种情况下不需要默认状态,因为undefined
是虚假的。无论如何,谢谢你检查我的代码。谢谢你测试我的代码。它确实有效。很抱歉在OP中澄清了这一点,unsub
旨在更改点击事件。另外,我认为不明嫌犯在这种情况下不需要默认状态,因为undefined
是虚假的。无论如何,谢谢你检查我的代码。