使用的 pinia
按官方的说法,getter相当于computed
那么我这样用:
const curr_data = computed(() => {
return store[`curr_${props.name}_data`].children
})
是不是嵌套computed?
我这样写唯一的目的就是简化 template 中的代码,这样做有什么缺点吗?
谢谢。
使用的 pinia
按官方的说法,getter相当于computed
那么我这样用:
const curr_data = computed(() => {
return store[`curr_${props.name}_data`].children
})
是不是嵌套computed?
我这样写唯一的目的就是简化 template 中的代码,这样做有什么缺点吗?
谢谢。
首先,你提供的代码片段确实使用了嵌套的computed属性。computed属性在Vue中用于计算数据,其值是基于其依赖的数据进行计算的。
对于你的问题,这样做确实可以简化模板中的代码,因为你可以在模板中直接使用curr_data
来代替原来可能复杂的引用。然而,这样做也存在一些潜在的问题和缺点:
store[
curr_${props.name}_data].children
数据在多个地方或频繁地发生变化,那么你的curr_data
computed属性也可能会被频繁地重新计算,这可能会导致性能问题。curr_data
的计算逻辑,你需要在多个地方进行修改,这可能会增加代码的维护成本。store[
curr_${props.name}_data].children
的值,但忘记了重新计算curr_data
,可能会导致数据不一致的问题。因此,虽然使用嵌套的computed属性可以达到代码简化的目的,但在实际使用时还是需要权衡这些潜在的问题。如果性能问题成为一个问题,或者代码的可读性和可维护性受到了影响,你可能需要考虑其他的方案,比如使用methods或者使用其他的状态管理方案等。
这样做其实没有什么太大的意义,你这样写的目的是为了监听store的值,如果store的值发生变化则触发computed事件,其实getter中获取的值已经是一个响应式的了,你这里写的computed事件只是监听了一个store的数据变化并返回一个新的数据,内部没有做任何逻辑操作,那为何不直接使用getter呢
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
本质上来说这样用没什么问题,但更好的方式是直接在
pinia
中定义成一个getter
,在外部直接访问即可,也就不需要先定义在render function
外部,又怕丢失响应性包一层computed
了