想请问一下各位前端大佬,我觉得直接修改更方便呀,这样设计是为了什么,可以不这样设计吗?


如果你严格按照这个规则来设计程序

那么有朝一日你想看一下有哪些地方修改了某个组件的某个属性 只要debug一下那个方法就可以了

不过vue的手段不止于此

你也可以在watch中监听属性达到debug的目的

相比之下还是函数的debug更加清晰


你是说props不允许修改这个事吗?

因为一个变数可以传递给多个子组件,如果你悄悄的修改它,导致其他子组件的props也跟著变了,这对于调试是个麻烦事。并不是说Vue做不到,而是Vue要遵守一些范式。

想修改props,只在子组件内改是允许改的,前提是你要先克隆一份。


写起来表面上是更方便,然后某天有个bug,和A组件中的一个状态有关,然后有其他100个组件会在A组件外直接修改这个状态,你就慢慢排查去吧


为了追踪数据历史状态,这样可以提供更好的debug和更好的维护性。

其实vue种的设计很多都符合这种思想,比如vuex中的mutaition。

数据的修改应该更容易被追踪和观察。这点vuetool就体现出来了。


你朋友知道你有一百万放在你的银行卡里,他有办法不经过你就把这一百万取出来吗?


可以直接修改的, 不过你按照规范的话 可以从vue devtool 受益。

我个人也认为比较麻烦,我习惯把js部分封装成类,然后把类的实例挂载到data,然后 直接xxx.xxx 或者 xxx.x()去调用。子组件要用就把实例传递下去。


这都不需要学习设计模式,你可以从外部修改类私有成员吗?道理是一样的。

自由不加限制,带来的一定是强者对弱者的剥削。


这样不会乱


不理解你的问题,可以直接修改的


主要是为了可维护性。你如果代码不会和其他人协作,也不用维护,没啥问题。


推荐阅读:
相关文章