我使用的日期选择器来设置它在我的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添加计算属性 - 它可能迫使它重新计算;) –