vue.js - Vue:为什么这个计算属性不是响应式的?
问题描述
这是来自 vue 组件的计算 getter 和 setter:
paidStartHours : {
get() {
return moment(this.position.paid_start, global.DB_DATETIME).format('HH');
},
set(value) {
this.$store.commit({
type : 'updatePaidStartHours',
newValue : value,
position : this.position
});
}
}
在获取时,它从 . 返回小时 (HH) position.paid_start
。在片场,它提交了一个存储突变,它基本上重新创建了时间字符串position.paid_start
。
In 绑定(双向)到输入,如下所示:
<input v-model="paidStartHours" type="text">
在初始加载时,计算属性paidStartHours
是正确的(根据 Vue 工具)。
但是,当我更新输入时, 的值paidStartHours
不会改变。我知道提交是成功的,因为交给组件的道具是正确的。对我来说完全是无稽之谈。
编辑:
突变中的代码updatePaidStartHours
已更改多次。例如,我试过这个:
updatePaidStartHours(state, payload) {
payload.position.paid_start = 999;
}
传递的 prop 的值更改为 999,但计算的 prop 的值保持不变。
编辑二:
我认为不值得尝试解决这个问题,因为我认为我的整个 Vue / Webpack / Node 安装非常糟糕。例如,今天早上我很高兴地关注了这个答案,Vuejs and Webpack:Why is store undefined in child components , to import an instantiated store into my App. 一切看起来都很好,但经过大约 8 小时的填充后,我发现没有商店属性是反应性的。我恢复到只导入配置,现在我的大多数商店属性都是反应性的,但遗憾的是不是上面的那些。我认为我需要放弃这种方法,直到我有时间重新审视我的 Vue / Webpack / Node 安装并重新开始。
解决方案
Vuex 突变应该只从 Vuex 动作中调用——所以在你的代码中你应该调度一个动作,而不是一个突变。此外,您的突变函数预计会改变store
参数 - 而不是那个payload
。您的吸气剂也是错误的 - 它应该使用this.$store.getters
而不是您的本地组件数据。
paidStartHours : {
get() {
return moment(this.$store.getters.position.paid_start, global.DB_DATETIME).format('HH');
},
set(value) {
this.$store.dispatch('updatePaidStartHours',value);
}
}
Vuex 模块:
// initial state
const state = {
position:
{
paid_start: null
}
};
// getters
const getters = {
position: (state) => state.position
}
// actions
const actions = {
updatePaidStartHours ({commit}, payload)
{
commit('SET_START_HOURS', payload);
}
}
// mutations
const mutations = {
SET_START_HOURS (state, payload)
{
state.position.paid_start = payload;
}
}
推荐阅读
- sql - 带计数的 SQL 案例语句?
- assembly - 我的随机数程序在图形模式下打印垃圾值
- java - List-Unsubscribe-Post:List-Unsubscribe=使用 AWS SES 的一键式 Spring 启动
- jira - 来自 jiraissue 表中的受让人列的奇怪受让人名称
- python - 我正在尝试使用此 python 代码创建 wordcloud,但不断出错
- shell - 将日期/时间戳附加到现有文件
- sympy - 分段和最小/最大函数之间的 Sympy 转换
- go - Socket.io 服务器未使用 graarh/golang-socketio 实现从客户端接收消息
- c# - C# 使用 StringFormat 垂直对齐文本并向上对齐
- wordpress - 如何在不更改域且不丢失与该域链接的邮箱的情况下将网站从 wordpress 改版为 wix?