Skip to content

Декоратор @system

Andrey Kobets edited this page Nov 17, 2021 · 5 revisions

Декоратор @system позволяет создавать свойства компонента, изменение которых не приводит к обновлению шаблона. По своему API декоратор полностью идентичен @field. Однако, системные свойства инициализируются до входных параметров или @field свойств, поэтому при инициализации мы не можем ссылаться на их значения, но мы можем использовать sync.link для связи свойств или хук beforeDataCreate.

import iBlock, { component, prop, system, hook } from 'super/i-block/i-block';
export * from 'super/i-block/i-block';

@component()
export default class bInput extends iBlock {
  @prop(String)
  valueProp: string = '';

  @system({
    type: String,
    init: (o) => o.sync.link()
  })

  value!: string;
}

Наблюдение за изменениями

Несмотря на то, что изменение @system поля не приводит к перерендеру шаблона, у нас по прежнему может быть необходимость следить за изменениями этого поля из кода компонента. Сделать это можно с помощью тех же декораторов @watch, @field и т. д.

Clone this wiki locally