VueX中state變化捕捉不到_getters監測不到state的變化

原因

可能有多種原因, 現在我說一下我碰到的一種情況: state種有一個變量叫state,它是一個json對象, 可把我害慘了.因為他這個json長這個樣:

messageBox:{
   friendId1: [ {message1}, {message2}, ... ],
   friendId2: [ {message1}, {message2}, ... ],
   friendId3: [ {message1}, {message2}, ... ],
   friendId4: [ {message1}, {message2}, ... ]
}

當我在mutation中改變好友message列表的時候, 無論在Vue組件中使用watch, 亦或者在VueX中使用getters, 都不能夠在messageBox變化的時候觸發監聽器. 網上找了很多解決方法,傷透了腦筋, 最後還是想了一個土方法給解決了. 別看土, 還真有用!

solution

將messageBox賦值為字符串形式, messageBox = " {} ", 隨後在mutation中改變messageBox的時候, 使用JSON.parse轉換為json格式, 更改後在用過逆運算JSON.Stringify轉化為字符串, 這個時候getters就可以自動捕獲到state中的變化了

Tags: