Клиент Apollo 3 сбрасывает реактивную переменную до ее начального значения

#reactjs #apollo-client

#reactjs #apollo-client

Вопрос:

Используя клиент Apollo 3 и создал реактивную переменную, как показано ниже;

  export const carVar = makeVar<Car>({
   brand: '',
   model: '',
   year: '',
   fastEnough: false,
});
  

В какой-то момент я установил ее значение следующим образом;

 carVar({ brand: 'BMW', model: 'M4', year: '1991', fastEnough: true });
  

Можно ли сбросить car переменную до ее начального значения без индивидуальной настройки ее свойств?

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

1. Вы можете определить свои начальные значения как постоянные. И вы можете использовать эту константу для сброса вашего carVar. пример: carVar(constants.initialValues)

2. Спасибо @OzanManav. Использование Partial<T> утилиты из Typescript было бы более элегантным.

3. да, это типобезопасное решение 🙂

Ответ №1:

Если мы создадим кэш, как показано ниже;

 export function makeCar(
  partial: Partial<Car>
): Car {
  return {
    brand: '',
    model: '',
    year: '',
    fastEnough: false,
    ...partial,
  };
}

export const CarVar = makeVar<Car>(
  makeCar({})
);
  

Мы можем повторно инициализировать реактивную переменную частично или полностью, как пожелаем;

   CarVar(makeCar({}));