到目前为止,我们可以使用计算出的属性执行以下操作。
isTypeRange: ({ field }) => {
return field && field.type === "Range";
}
我们可以做这样的事情吗?
fieldLength: ({field.values.length}) => {
return field.values.length;
}
遵循此链接https://github.com/sveltejs/svelte/issues/11最终使我进入https://github.com/sveltejs/svelte-extras/。但这再次解释了深入观察。
更新: 附言 我知道{field.values.length}是无效的javascript,我只是想显示我想要实现的目标。观察类似于ember的嵌套属性的含义
fieldLength: Ember.computed('field.values.[]', {
get(){}, set(){}
})
答案 0 :(得分:0)
简短的回答是“否” —在Svelte中,更改是在(组件或store的顶层)进行跟踪的,因为分别监视嵌套属性将涉及大量代码和内部记账。因此,只要fieldLength
发生更改(除非您使用immutable选项,否则“更改”可能表示一个新对象或现有对象的变异),field
都会重新计算。除非长度更改,否则依赖{em>的不会更新。
更长的答案是fieldLength
是无效的JavaScript,但是有一种有效的方法(如果看上去很混乱)来表达相同的想法:
({field.values.length}) => ...
可能是,将来的Svelte版本可以跟踪嵌套属性,并且仅在它们更改时才重新计算值-如果是这样,它将使用该解构语法找出哪些嵌套属性是依赖项。但是,尽管偶尔会有不必要的重新计算,但不管我们将来的意图是什么,这种方法今天都将奏效。