Vue.js 是否每个孩子都会在道具中添加反应性的getter和setter?

Vue.js 是否每个孩子都会在道具中添加反应性的getter和setter?,vue.js,Vue.js,想象一下,你有一大堆事情要做: [ { id: 1, name: Pet a cat, priority: 'extreme' }, ... ] 该应用程序有三个组件:祖父母->父母->子女 todo列表在祖父母的data函数中声明。这是列表首先变得被动的地方。然后,列表作为道具从祖父母传递到父母,从父母传递到孩子。从我有限的理解来看,链中的每个组件都添加了自己的getter和setter。我担心的是,这种传递道具的方式并不是最佳的表演方式。我的

想象一下,你有一大堆事情要做:

[
   {
     id: 1,
     name: Pet a cat,
     priority: 'extreme'
   },
   ...
]
该应用程序有三个组件:祖父母->父母->子女


todo列表在祖父母的
data
函数中声明。这是列表首先变得被动的地方。然后,列表作为道具从祖父母传递到父母,从父母传递到孩子。从我有限的理解来看,链中的每个组件都添加了自己的
getter
setter
。我担心的是,这种传递道具的方式并不是最佳的表演方式。我的意思是,我应该以一种最小化此类道具通过与否的方式重新构造代码吗?

首先,Vue中的道具是只读的。如果您试图更新一个运行时错误,您将得到一个运行时错误。所以实际上没有父组件和子组件的设置器,只有父组件和子组件的设置器。
如果您的子组件想要更新它,您必须发送事件,直到某个组件能够实际更新数据

其次,它不会有任何性能问题,这是Vue的工作方式,而且它很擅长。事实上,这是实现你想要的目标的最正确、最直接的方法。显然,如果父/子列表扩展得更多,那么只使用道具+事件对您来说将是一种痛苦,但我认为没有性能问题

避免数据通过每个组件子代传递的另一个解决方案是使用“Vuex存储”。但对于初学者来说,这并不是非常容易设置和理解的。如果你的应用程序越来越复杂,你可以尝试一下

我建议你坚持目前的解决方案,因为它没有错


快乐编码:)

如果多个关卡想要操纵这些数据,那么当通过这种方式将道具向下传递到多个关卡时,有几个注意事项可能会对您不利。一般来说,如果多个组件需要对同一数据进行操作,我更喜欢使用一个组件,而不是通过传递道具,因为它们都有一个“真相来源”@WesleySmith,我计划发出事件,这样只有祖父母才能决定执行哪种数据操作。我想知道的是,这种方法会增加多少计算负载。它会有多个副本,尽管你可能不会注意到它。@WesleySmith,如果你想知道与vuex方法相比,它会增加多少负载?@WesleySmith,谢谢你,先生!祝你白天或晚上愉快!