setState時,為什麼shouldComponentUpdate中this state的值沒更新?

時間 2021-05-31 18:21:08

1樓:KKK9

重構物件的toJSON方法,再用JSON.stringify()就沒問題了。

如果引用的物件位址沒有變 ===,那麼就會被console欺騙。

%分割線%

重構是為了防止迴圈引用報錯。

2樓:

setState時scu中的state還沒更新。

render前state就更新了,此時這個更新就有可能反映到前面的console中,例如展開乙個object的property。

詳見經典著作《You Don't Know JS》中的Async Console章節:

getify/You-Dont-Know-JS

3樓:程墨Morgan

因為呼叫shouldComponentUpdate的時候,this.state真的沒有更新, 在render函式呼叫之前才更新。

那麼,為什麼你console.log(this)看到的又是更新之後的值呢?

因為console.log(this) 輸出是這樣的然後你再點那個Test左側的三角型符號展開這個物件來看其中的值,這時候,render早就執行完了,畢竟你的手不可能比React畫得更快,而瀏覽器(Chrome)在展開的時候,顯示的是「當前的值」,也就是更新之後的值,所以你看到的是就是更新後的state。

為什麼大野智是ohno 櫻井翔是sho

大部分宣傳成員名字的時候,都需要字數相近而且朗朗上口,還需要方便書寫。所以大家基本都是3 4個字母 小大 ohno 翔 sho 拔哥 aiba 二宮nino 潤潤jun 一眼望過去,大概能記住全員。這樣才能更好的被記住,也方便大家快速認識嵐。就像vs嵐裡讓路人猜嵐五個人的全名的時候,大家人氣相當,但...

痛經時用暖寶寶,為什麼時靈時不靈?

餘070403 第一,要了解痛經症狀的根源在哪。第二 看暖寶寶放的位置對不對,還有個人的胖瘦。例如小腹痛,有些人是因為小腹的問題引起的,放在小腹是有用的。但還有很多人是由於大腿引起的,放小腹就不靈了。再比如腰痛,大部分人是放腰部的,這個就基本沒啥用,因為腰痛的根源根本不在腰部。所以了解疼痛症狀是由什...

為什麼被魚刺卡住會時痛時不痛?

Dr.Liu 扎魚刺在耳鼻喉科是比較常見的急診,每次夜班總能遇上那麼幾個,每次遇上心裡就嘀咕,這麼大的人了,還卡魚刺,直到我自己被卡住 魚刺常扎於雙側扁桃體 舌根及會厭谷。為什麼會有時痛有時不痛,這主要與魚刺的長短 粗細 角度 深度 位置有關係,如果扎的比較淺,緊貼於粘膜表面,可能隨著您某一次吞嚥會...