начальное «реактивное» значение равно нулю

#vue.js #vuejs3

#vue.js #vuejs3

Вопрос:

все. У меня есть вопрос об использовании reactive . Я знаю тип состояния, но начальное значение пустое. Как мне использовать присваивание? Код выглядит следующим образом

 //....
  let origin = reactive<Timeslot | {}>({});
  const handler = (data) => {
       Object.assign(origin, data);
  };
//..
 

На самом деле, я хочу присвоить начальное значение origin to null . Как я могу справиться с этой проблемой?

Ответ №1:

Вы не сможете назначить null реактивному, поскольку реактивная подпись требует, чтобы тип расширял объект:

 function reactive<T extends object>(target: T): UnwrapNestedRefs<T>
 

С учетом сказанного, зачем вам реактивное значение null? Вы не сможете воспользоваться системой реактивности vue, если вы инициализируете реактивный объект с null помощью или даже с пустым объектом (хотя это возможно), поскольку в этом случае вы ничего не отслеживаете.

Возможно, вам нужна ссылка? Вы можете сделать ref обнуляемым с помощью обнуляемого типа объединения, например.

 let origin = ref<Timeslot | null>(null);
 

Комментарии:

1. Будут ли свойства временного интервала в этом случае реактивными? Не следует ли использовать reactive() для объектов?