【发布时间】:2021-10-29 08:22:42
【问题描述】:
我正在尝试在一个函数中使用 setDisplay 更新 React.useState(""),该函数采用字符串数组并在 setDisplay 之前将它们加入单个字符串。
没有 setDisplay,我可以通过 console.log() 获取加入的数组。
const App = () => {
const [display, setDisplay] = React.useState("");
const values = [];
const onClick = (value) => {
values.push(value);
console.log(values) // w/o setDisplay output: ["1","2","3","4"]; w/ setDisplay output: ["1"]; ["2"]; ["3"]; ["4"];
setDisplay(values.join(""))
};
return (
<div className="p-5">
{display}
<NumPads data={keypress} onClick={onClick} />
<OperatorPads data={keypress} onClick={onClick} />
</div>
);
};
【问题讨论】:
-
为什么
const values = [];在onClick函数之外? -
@KavinduVIndika 在函数内部也没有多大意义
-
是的,没错……现在我明白了,在这种情况下,OP 试图将值推送到数组变量而不是状态中。
-
你不能那样做。任何时候你在 React 组件中看到
.push或.sort,这都是一个错误。将值放入状态中,并且仅将它们连接起来以显示,将它们存储在连接状态中是没有意义的。
标签: javascript arrays reactjs use-state