反应usestate,setstate和{state}回报
我遇到了 React State 的渲染问题。
问题是 {state}
返回的值晚了一拍。
但 handleChange
中的控制台日志显示正确的值。
如果 state 的先前值为 9,state value 的当前值为 10,则 handleChange
中的 console.log({state})
显示 10,并且 < ;span>{state}
返回显示 9。
它看起来与其他状态异步问题不同。
我不明白为什么会这样。
const [findText, setFindText] = useState("");
const [findCount, setFindCount] = useState(0);
const handleChange = (e) => {
let str = e.target.value;
setFindText(str);
let cnt = 0;
doxDocument.map((docx) => {
cnt += docx.src.split(findText).length - 1;
});
setFindCount(cnt);
console.log({findCount})
};
return(
<div>
<input
type="text"
value={findText}
onChange={handleChange}
/>
<span>{findCount} found <span>
</div>
);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
两个问题...
FindText
在您在split()
中使用时,不会将其更新为新值。用str
而不是计算findcount
在备忘或代码> FindText 。filter()
。使用redy()
计算计算总和Two problems...
findText
will not have been updated to the new value when you use it insplit()
. Either usestr
instead or calculatefindCount
in a memo or effect hook with a dependency onfindText
.filter()
. Usereduce()
to calculate a computed sum