2017-01-30 3 views
4

Я хочу создать компонент Vue.js, который получает свойства от родительского компонента, например:Как отключить наблюдение данных в vue.js свойство компонента

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

Поскольку value и format определяются как свойства, Vue автоматически регистрирует наблюдателей до их значений. Это нормально, но для моего случая использования я уверен, что эти значения не изменятся, поэтому их не нужно наблюдать.

Учитывая, что мой элемент таблицы таблицы может находиться в таблице с, скажем, 1000 строками и 10 столбцами, эти 2 свойства создадут 20 000 наблюдателей, и я хочу избежать всех этих накладных расходов (и у моего реального компонента таблицы ячеек больше комплексные свойства).

Есть ли способ отключить свойство компонента от наблюдения, чтобы избежать потерь CPU & ресурсов памяти?

Update: Я нашел решение низкого уровня с компонентным подходом функционалом, объясняется здесь: 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

Параметр слота может работать только для одного и текстового свойства. Если мне нужно передать несколько свойств, а некоторые из них могут быть объектами, мне придется разбирать сложный текст, и это может привести к поражению первоначальной цели. –

Смежные вопросы