#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({}));