扫码关注官方订阅号
我有点疯狂了。观察者不应该只观察“司机”道具吗?当我编辑“standsData”时,它也会以某种方式触发,使我无法对其进行排序。我错过了什么吗?
这可能取决于您对数组的排序方式,但由于您分配了 this.standsData = this.drivers ,因此对 this.standsData 的任何变异更改也会变异 this.drivers 下的数据,因为它们引用同一个数组。您可能想要复制驱动程序数组以放入组件状态,如下所示:
this.standsData = this.drivers
this.standsData
this.drivers
methods: { test() { console.log("chamou o teste") this.standingsData = [...this.drivers]; } }
请记住,在 this.standsData 中深度修改其他数据也会出现类似的问题,因为您在观察器上指定 deep: true ;如果您必须这样做,则在将 this.drivers 移动到 this.standsData 时,您需要深度复制数据。这可以使用自定义代码或 lodash.cloneDeep 等工具来完成。
deep: true
这里的另一个怪癖是,默认情况下,Vue 观察者不会在组件初始化时触发。如果您希望在 drivers 属性在组件初始化期间初始设置时发生变化时触发它,则需要将 immediate: true 添加到观察程序(文档 此处)。
drivers
immediate: true
watch: { drivers: { deep: true, immediate: true, handler: function () { this.test(); }, }, },
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这可能取决于您对数组的排序方式,但由于您分配了
this.standsData = this.drivers,因此对this.standsData的任何变异更改也会变异this.drivers下的数据,因为它们引用同一个数组。您可能想要复制驱动程序数组以放入组件状态,如下所示:methods: { test() { console.log("chamou o teste") this.standingsData = [...this.drivers]; } }请记住,在
this.standsData中深度修改其他数据也会出现类似的问题,因为您在观察器上指定deep: true;如果您必须这样做,则在将this.drivers移动到this.standsData时,您需要深度复制数据。这可以使用自定义代码或 lodash.cloneDeep 等工具来完成。这里的另一个怪癖是,默认情况下,Vue 观察者不会在组件初始化时触发。如果您希望在
drivers属性在组件初始化期间初始设置时发生变化时触发它,则需要将immediate: true添加到观察程序(文档 此处)。watch: { drivers: { deep: true, immediate: true, handler: function () { this.test(); }, }, },