【发布时间】:2021-07-30 15:13:36
【问题描述】:
我使用以下代码作为我的状态的更新函数(内部挂钩)。
虽然控制台输出在回调中正常工作,但我如何访问外部的值。我返回someStatus 并将其分配给x。但是x 打印为undefined。
下面的代码有问题吗?
let x = setSomeStatus((someStatus) => {
console.log("Some Status :::: :" + someStatus); // "XYZ"
return someStatus;
});
console.log("x = " + x); // undefined
我按照建议在下面尝试了,但仍然没有在回调之外获得更新的值;
setSomeStatus((someStatus) => {
console.log("File Status :::: :" + someStatus); // "XYZ"
return someStatus;
});
console.log("someStatus = " + someStatus);
以下似乎可以正常工作(请确认它是否看起来不错)
const onCellClicked = (e) => {
if (e.data.status !== 'TO') {
console.log(e);
//let fileStatus;
let fileType = (e.data.status === 'Y') ? 'O' : 'I';
setCurrentFileStatus(e.data.status);
setFileType(fileType);
var tempObj = {};
setCurrentFileStatus((fileStatus) => {
setFileType((fileType) => {
tempObj.currentFileStatus = fileStatus;
tempObj.summaryDate = form.dateField;
tempObj.fileType = fileType;
});
});
setSharedData(tempObj);
console.log("tempObj = " + tempObj);
}
}
【问题讨论】:
-
您将
x转换为一个函数,但您没有调用它。 -
setSomeStatus 是 setState 函数吗?如果是这样,为什么不直接访问状态而是尝试将
x设置为它? -
如果我尝试调用它,我会得到 x 不是函数
-
如果您将回调传递给 setState 函数,它接收的参数(在您的情况下为
someStatus)是之前的值。您返回相同的参数而不更改它,因此状态始终设置为相同的undefined值。阅读我在答案中发布的链接中的Functional updates。
标签: reactjs react-hooks