reactjs - 如何等到设置上下文值 | 反应钩子
问题描述
如何等到设置上下文值?
我遇到了一个问题,我无法从上下文中获取值,所以当我需要它时,我总是得到初始值,""
. 所以现在我的useEffect
组件中有一个,
useEffect(() => {
if (posContext.activePaymentTabId) {
console.log("poscontext i useeffect", posContext); <-- can see my value here now
// handlePaymentResponse(true, "GODKÄNT");
}
}, [posContext.activePaymentTabId]);
我在这个函数中设置了我的值:
const makeCardPayment = async () => {
posContext.handleSetActivePaymentTabId(); // <-- Here I set my value that I need later
try {
const res = await functionA();
return functionB(res.foo);
} catch (error) {}
};
但是在functionB
需要我的价值的地方:
const functionB = (foo) => {
if (foo) {
setTimeout(() => {
console.log("calling...", posContext); // <-- Now my value is back to it's initial
}, 3500);
}
};
那么,当我想直接从我的上下文中访问我的值时,我还有哪些其他选择?
解决方案
由于上下文值更改仅反映在初始渲染上,因此您可以将回调函数传递给返回更新值的 setter 并将上下文值传递给functionB
.
const makeCardPayment = () => {
posContext.handleSetActivePaymentTabId(async function(updatedContext) {
try {
const res = await functionA();
return functionB(res.foo, posContext);
} catch (error) {
}
});
};
const functionB = (foo, posContext) => {
if (foo) {
setTimeout(() => {
console.log("calling...", posContext); // <-- Now my value is back to it's initial
}, 3500);
}
};
推荐阅读
- c++ - 双向链表问题 - 包含但不显示的项目
- c++ - 图像在 localhost 上显示已损坏
- java - subscribeOn 在 ServerRequest 的 bodyToMono 上使用时不起作用
- object - 置信度分数的阈值
- jquery - 如何使用超链接链接打开另一个文件?
- css - 当我在ios11设备中将溢出滚动的值从“触摸”更改为“”时,屏幕飞溅
- json - 解组到相同的结构但不同的 json 名称
- javascript - Node.js 管道发布请求并获得响应
- ajax - 在ajax调用后为第0行第0列请求未知参数'0'
- android - 在系统应用服务中执行关键的不可延期的工作