javascript - 为什么我不能将函数的结果用作 useState 中的状态
问题描述
我尝试使用useState
对象数组作为值。像这样的东西:
const [state, setState] = useState(arg)
Arg 是函数的结果,它返回如下数组:
[{a:1, b:2}, {a:3, b:4}]
但是当我尝试使用它时,我的状态是空的,什么也没有发生。如何使用 arg in useState
?我看到另一个类似的问题,但这些解决方案不起作用。或者我不明白。
//take users list from DB
const dispatch = useDispatch()
const items = useSelector((state) => state.users.list)
useEffect(() => {
dispatch(funcThatGetUsersList)
}, [dispatch])
//use items for handler
const [list, setList] = useState([])
function checkboxHandler = (event) => {
do smth with setList(list)
}
添加了一小段代码
解决方案
如果您使用惰性初始状态,则该函数将仅被评估一次。
如果它在后续渲染中返回不同的值,则其他值将被忽略。
const condition = false
const getArg = () => condition ? arg : []
useState(getArg) // getArg() will be called only once
推荐阅读
- azure-data-factory - 使用显示数据框调试 ADF 和 Databricks
- uwp - UWP 自定义文本框样式
- python - 如何在 django rest_framework 的 1 个视图中同时创建 2 个不同的对象?DRF
- api - 在 Quarkus Microprofile 中验证 REST 参数
- css - 如果可能的话,如何使我的输入在所有浏览器和所有设备上保持一致?
- javascript - scrollTop 在 iOS 设备上没有一直滚动
- javascript - 带有distube 的discord 音乐机器人| 高分辨率照片| CLIPARTO 不和谐.js
- android - Android mkdirs() 在 Android 11 上使用 Environment.getExternalStorageDirectory() 返回 false
- rdf - 为什么在 GraphDB 中会发生这些类型推断?
- reactjs - 是否可以从打字稿中的库中覆盖类类型定义?