Я хочу создать компонент 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/
Интересно, что является правильным подходом ...
К сожалению, это не сработает: вы просто добавляете ссылку на динамическое свойство, которое все равно будет наблюдаться, даже если вы удалите 'this.dinamicProp'. –
использовать слот и передавать статические данные в слот? –
Параметр слота может работать только для одного и текстового свойства. Если мне нужно передать несколько свойств, а некоторые из них могут быть объектами, мне придется разбирать сложный текст, и это может привести к поражению первоначальной цели. –