我正在尝试根据一组值动态设置状态

时间:2019-09-10 00:17:56

标签: reactjs react-hooks

我有这些复选框,它们通过ID来控制状态,但是由于使用状态不受初始控制,因此我收到了使用不受控制的组件的错误消息。我正在尝试根据未知值呈现状态。

我正在尝试做这样的事情

我正在尝试动态设置初始状态

const [deliveredBoxes, setDelivered] = useState({
    orders.map((order, i) => {
      [order.transactionID]: order.orderDelivered
    })
});
  

解析错误:意外的令牌,预期为“,”

这是我想出的,尽管仍未设置初始状态

        const [deliveredBoxes, setDelivered] = useState([]);
         useEffect(() => {
          orders.map((order, i) => {
          setDelivered({
        ...deliveredBoxes,
        [order.transactionID]: order.orderDelivered
           });
       });
      }, []);

2 个答案:

答案 0 :(得分:0)

您必须像下面那样更新代码。

解决方案1::只需在(函数中添加map

const [deliveredBoxes, setDelivered] = useState({
  orders.map((order, i) => (
    {
       [order.transactionID]: order.orderDelivered
    }
  ));
});

解决方案2:添加{并在object函数中返回map

const [deliveredBoxes, setDelivered] = useState({
  orders.map((order, i) => {
    return {
      [order.transactionID]: order.orderDelivered
    }
  })
});

希望这对您有帮助!

答案 1 :(得分:0)

我认为您需要使用另一个钩子useEffect。 无论是否有效,请尝试此操作。

const [deliveredBoxes, setDelivered] = useState([]);

useEffect(()=>{
 orders.map((order, i) => {
      [order.transactionID]: order.orderDelivered
}
setDelivered(orders);
, [])