Vuex更改不影响模块

ken

我有一个UserDialog利用Vuex状态树的一部分来确定它是否应该显示自己的组件:

import { Component, Prop, Vue } from 'vue-property-decorator';
import { State, Getter, Mutation, Action, namespace } from 'vuex-class';
import { fk } from 'firemodel';
import { User } from '@/models/User';
const Users = namespace('users');

@Component({})
export default class UserDialog extends Vue {
  @Prop() public id!: fk;
  @Users.State public show: fk;
  @Users.Getter public selectedUser: User;
  @Users.Mutation public HIDE_USER_PROFILE: () => void;

  public get showDialog() {
    return this.show === undefined ? false : true;
  }

}

从父组件中,我正在调用Vuex commit('SHOW_USER_PROFILE', id),从而设置此ID,它应该相应地更新UserDialogshow属性。

在此处输入图片说明

我可以很清楚地看到,Vuex存储已收到对SHOW_USER_PROFILE的调用,并且确实已更新了状态树中的状态(这是通过浏览器中的Vue Developer插件完成的)。但是,当我切换到UserProfile组件时,我看到它仍然没有收到状态更新。

注意:如果在设置了要突出显示的UserID之后重新加载页面(又名CMD-R),它将重新加载组件,并且由于我正在使用veux-persist,因此ID仍在状态树中设置。此时,组件确实接收到正确的状态,但是当依赖于正常的反应系统时,它就无法正常工作。

有人可以帮忙吗?


对于其他上下文,这里有一些其他模块:

店铺定义

export default new Vuex.Store<IRootState>({
  modules: {
    packages,
    users,
    searchCriteria,
    snackbar
  },
  plugins: [FireModelPlugin, localStorage.plugin]
});

用户变异

const mutations: MutationTree<IUsers> = {
  selectUser(state, id: fk) {
    state.selected = id;
  },
  SHOW_USER_PROFILE(state, id: fk) {
    state.show = id;
  },
  HIDE_USER_PROFILE(state) {
    state.show = undefined;
  }
};

我向UserDialog上面组件添加了一个计算属性

public get userId() {
  return this.$store.state.users.show;
}

有一种想法认为这可能是反应性的,而@Users.State装饰show属性却不是。不幸的是,它们的性能完全相同。

在此处输入图片说明

ken

@Derek和我昨晚交谈,意识到这个问题的原因是由于状态转换为“未定义”而当前的Reactive系统无法处理(当使用Object Proxies到达Vue-NEXT时应该没问题)。剩下的代码工作得很好,当我从转出的状态转变:undefined → string → undefinednull → string → undefined

非常感谢@Derek花费的时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不影响滚动条颜色的情况下更改QScrollArea的背景颜色?

当值未更改时,MySQL在更新时不影响行

如何在不影响非暂存更改的情况下丢弃git中的暂存更改

更改模型属性的数据类型而不影响数据

更改wordpress主题文件夹名称而不影响网站

为什么Python线缓存会影响回溯模块而不影响常规回溯?

更改线条高度而不影响背景颜色

我的CSS更改完全不影响我的网页

更改<span>而不影响<span class =“ something”>

更改Excel图表图例颜色而不影响系列

更改字体大小而不影响div父级高度

不更改Vuex存储中的模块状态。Vuex | Vue

是否可以更改X背景位置而不影响JS或jQuery中元素的Y背景位置?

如何更改不影响客户的WCF服务合同?

在不影响标题的情况下更改UITableView的Alpha

CSS-在不影响线性渐变的情况下更改背景图片?

CSS不影响PHP

gradle有条件地在不影响根的子模块中应用插件?

更改列表元素将影响/不影响派生列表

JavaScript不影响div

ng-disabled不影响更改时启用/禁用的输入

不影响其他元素在边框宽度更改上的定位

更改分区而不影响LUKS加密

更改CSS样式而不影响其他元素

更改文本而不影响其他属性

读取 XML 后更改颜色不影响属性更改

在不影响视图的情况下更改变量

R Shiny + plotly:使用 javascript 更改轨迹颜色而不影响多个图中的标记和图例

如何在不影响引导 css 样式的情况下更改 <select> 元素上的边框颜色?