Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 您使用什么命名来避免“引用”;口吃;在Vuex模块中?_Javascript_Vue.js_Vuex - Fatal编程技术网

Javascript 您使用什么命名来避免“引用”;口吃;在Vuex模块中?

Javascript 您使用什么命名来避免“引用”;口吃;在Vuex模块中?,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我一直很难避免Vuex模块中的“口吃”。似乎大多数时候,模块的名称也是它所包含的 例如,假设一个处理用户的模块。我将模块文件命名为user.js 导出默认值{ 声明:{ 用户:[] }, //用于读取、创建和更新用户的变化和操作。。。 } 然后在我的商店的index.js 从“用户”导入用户; 导出默认的新Vuex.Store({ 模块:{ 用户 } }); 当我想从组件获取用户列表时,我必须使用: this.$store.user.users 如果我没有在用户列表中使用模块,我只需要th

我一直很难避免Vuex模块中的“口吃”。似乎大多数时候,模块的名称也是它所包含的

例如,假设一个处理用户的模块。我将模块文件命名为
user.js

导出默认值{
声明:{
用户:[]
},
//用于读取、创建和更新用户的变化和操作。。。
}
然后在我的商店的
index.js

从“用户”导入用户;
导出默认的新Vuex.Store({
模块:{
用户
}
});
当我想从组件获取用户列表时,我必须使用:

this.$store.user.users
如果我没有在用户列表中使用模块,我只需要
this.$store.users
,它更具可读性和优雅性

有没有任何关于命名约定或设计模式的想法可以避免这种口吃?

您可以使用

从“vuex”导入{mapState}
导出默认值{
// ...
计算:mapState({
用户:state=>state.user.users
})
// ...
}

然后,您可以使用
this.users
作为
this.$store.user.users的别名,从而获得创造性。拥有用户的目的是什么?很可能是访问控制。因此,将模块命名为acl(行业采用的访问控制列表的首字母缩略词,也称为“用户权限和权限列表”)。或者您可以将
用户
重命名为
管理员
常客
。或将批次命名为
列表
。除此之外,您的问题与编码几乎没有关系,而且非常主观(固执己见)。对我来说,一个好的命名惯例对你或其他人来说可能并不相同。因此,这里不讨论这个问题。使用
mapState
怎么样?也许可以在名称的最后部分添加一些上下文。e、 g.
this.$store.user.all
,或者如果他们不是所有用户,则使用一个描述其重要性的名称。虽然这是一个相当不错的解决方案,但a)它并不能真正解决问题(你仍然在
mapState
中结巴),b)它回答了一个离题的问题。可以说,这是没有用的,会造成混乱。这个问题很可能会被关闭为离题,并从网站上删除,这将恢复您在这里获得的任何代表收益。从理论上讲,你应该避免回答问题,把精力投入到回答更好的问题上来,这样有更大的机会帮助未来的用户。请阅读。谢谢,这是一个很有帮助的解决方法。正如@tao所说,它并不能完全避免口吃,但至少我的组件不会充斥着对存储模块的深度嵌套访问。我现在就要这个了。@LodeRunner mapState支持名称空间,请参阅。它可能是
mapState('user',['users'])
。实际上,它甚至可以更短:如果
users
是商店中唯一这样命名的状态,它可能是
…mapState(['users'])