我使用的日期選擇器來設置它在我的Vuex商店被設置moment.js
日期:Vuex吸氣不會更新
存儲狀態:
const state = {
arrival: '',
departure: ''
}
吸氣劑:
const getters = {
arrival: state => state.arrival,
departure: state => state.departure,
prettyArrival: (state) => {
if (state.arrival instanceof moment) {
return state.arrival.format(state.prettyFormat);
}
return '';
}
}
我的vuex商店正在更新到達狀態(這是一個moment.js
對象),因爲我可以清楚地看到顯示更新和原始狀態更改的devtools。
雖然prettyArrival沒有正確更新。它僅在到達從空字符串變爲moment.js
對象時才被設置一次。
我的到來吸氣節目在這樣的devtools:
arrival:"2017-07-21T09:15:53.770Z"
當我登錄它,我得到moment.js
對象雖然有似乎包含reactiveGetters
和reactiveSetters
這樣的反應似乎到位。
我是如何設置自己的吸氣劑還是有其他問題?
歡迎任何提示,如果你需要更多的信息讓我知道。
你是什麼意思由'prettyArival沒有更新(......)它只是被設置一次'。所以它*正在被更新?調試(或至少把日誌語句)在這個方法和if語句中。在數據中,你說默認值是空字符串,但是你傳遞時刻對象 - 對我來說看起來不太合適,但這可能是一個小問題。 –
@AndreyPopov當在getter中使用'consolg.log'時,它似乎只是第一次調用'prettyArrival' getter,然後它再次抓住它的調用。我猜它與緩存有關:「getter的結果是基於它的依賴關係緩存的,並且只會在它的一些依賴關係發生變化時重新評估。」但我不知道這是如何在內部工作的。 –
嘗試將默認值更改爲「{}」。還要爲這個getter添加計算屬性 - 它可能迫使它重新計算;) –