为什么我不能在useState

时间:2020-05-03 11:09:21

标签: javascript react-hooks use-state

我尝试将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)
   }

添加了一些代码

2 个答案:

答案 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])