2017-01-30 91 views
4

我想创建一个Vue.js组件从它的父组件接收性质,例如数据观察:如何禁用vue.js组件属性

<table-cell :value="foo" format="date" /> 

由于valueformat被定义为属性,Vue的会自动将观察员注册到他们的值。总的来说,这很好,但对于我的用例,我肯定知道这些值不会改变,因此不需要遵守。

鉴于我的表格单元格组件可以在1000行和10列的表格中,这2个属性将创建20,000个观察者,并且我想避免所有这些开销(并且我的真正表格单元格组件具有更多复杂的属性)。

是否有任何方法禁止观察组件属性,以避免浪费CPU &内存资源?

更新: 我发现与功能组件的方法一个低级别的解决方案,这里解释:https://vuejs.org/v2/guide/render-function.html#Functional-Components

我有这个的jsfiddle测试它:https://jsfiddle.net/50wL7mdz/12143/

我不知道这是否是正确的做法...

回答

1

传递它与自定义数据我认为像<your-component :data-value='foo' :data-format='date'>

它会做你想做的。

+0

不幸的是,即使您删除了'this.dinamicProp',您也只是添加一个对动态属性的引用,它仍然会被观察到。 –

+0

使用插槽并在插槽中传递静态数据? –

+0

插槽选项可​​用于单个&纯文本属性。如果我需要传递多个属性并且其中一些属性可能是对象,那么我将不得不解析复杂的文本,这会破坏最初的目的。 –