我尝试将useState
与对象数组一起用作值。像这样:
const [state, setState] = useState(arg)
Arg是返回如下数组的函数的结果:
[{a:1, b:2}, {a:3, b:4}]
但是当我尝试使用它时,我的状态为空,什么也没发生。如何在useState
中使用arg?
我看到了另一个类似的问题,但是这些解决方案不起作用。也许我听不懂。
//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)
}
添加了一些代码
答案 0 :(得分:2)
如果您使用lazy initial state,则该函数将仅被评估一次。
如果它在后续渲染中返回不同的值,则那些其他值将被忽略。
const condition = false
const getArg = () => condition ? arg : []
useState(getArg) // getArg() will be called only once
答案 1 :(得分:1)
您不能直接使用useState。也许我的解决方案会有所帮助。我用useEffect传递了值。例如
useEffect(() => {
if (list)
setList(yourFunc)
)
}, [yourFunc])