javascript - 我如何在没有 redux 的情况下获得当前状态?
问题描述
我将 redux 与 react 一起使用,但我将 redux 保存为主应用程序状态,并使用 react hooks 处理组件之间的非共享状态。
例如,我有一个导航栏菜单项,每个项目的颜色一旦被点击都应该变成蓝色,所以我想到useState来更改被点击的项目并向它添加一个类.active。
我面临的问题是我没有得到最新的状态,但我得到了以前的状态,我知道在反应中设置状态是异步和批处理的。
演示代码:
零件
const [targets, getTarget] = useState([]);
const addTarget = (e) => {
getTarget([e.target]);
}
const handleOnItemClick = (e, category) => {
addTarget(e);
console.log(targets) // return [] on first click
}
myFunctionToAddAcTiveClass () {
//i need to use state here but i could not
// because it does not return the latest state
}
return(
<ul className="categories-list-items d-flex justify-content-between mb-4">
{items.map((item, index) => {
return (
<li
key={index}
onClick={(e) => handleOnItemClick(e, category)}
>
{item}
</li>
);
})}
</ul>
)
有没有办法在每次点击时获得正确的项目以添加.active类?
解决方案
推荐阅读
- apache2 - WSL2 Apache2 反向代理仅排除子域的根
- python - 不存在频率中的 SciPy 离散余弦变换 (DCT) 功率
- java - 与在 iframe 页面中嵌入 pdf 的兼容性
- android - 如何避免在 Compose 中硬编码“Log”标签
- bash - 读取 txt 文件在 bash 脚本中返回字符串而不是 int。算术运算符无效
- html - 实现 CSS:导航栏由于侧导航而崩溃 - 如何防止?
- r - 如果 df 不为空,则 dplyr 负选择
- javascript - Javascript RegExp 验证字符串是否以 html 开放标签 + 除标签外的任何内容结束
- c - 多次使用 fgets 的问题
- python - sqrt() c++ 和 math.sqrt() python