请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

setObj 浅拷贝问题

 const [obj, setObj] = useState({ like: 0, on: true });
  return (
    <button
      onClick={() =>
        setObj({
          ...obj,
          like: obj.like + 1
        })
      }
    >
      {obj.like}
    </button>
  );

老师 请问讲课的时候 setObj的为啥没有这样做一下浅拷贝呢?谢谢

正在回答 回答被采纳积分+3

1回答

张轩 2021-07-06 09:09:01

同学你好 像你这样浅拷贝是没问题的,在课中,由于只有两个属性,所以直接把属性又写了一遍,当然如果属性很多,浅拷贝当然是更好的。

0 回复 有任何疑惑可以回复我~
  • 提问者 ywang04 #1
    谢谢老师回复 明白你的意思了那如果有如下场景
    
    const [obj, setObj] = useState({
         name: null,
         age: null,
         address: {
             city: null,
             zipCode: null
         }
    })
    然后一个api返回的results包含上面所有的property值 用setObj进行更新时 我们可以直接setObj(results)吗? 还是需要setObj({...obj, results})
    回复 有任何疑惑可以回复我~ 2021-07-06 11:47:45
  • 张轩 回复 提问者 ywang04 #2
    一开始可以设置为null,没必要那么多空属性,然后直接采用第一种方法即可。
    回复 有任何疑惑可以回复我~ 2021-07-07 09:23:49

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号