kotcich
@kotcich
Я скучный.

Как использовать withDefaults с вложенными обьектами (typescript)?

// Child

interface Props {
  css?: CSS
}

interface CSS {
  [k: string]: {
    [k: string]: string | number
  }
}

const props = withDefaults(defineProps<Props>(), {
    css: () => {
        return {}
    },
})

Проблема в том, что сейчас widthDefaults отрабатывает только, если я не передаю css вообще. Я же хочу добиться дефолтных стилей, но при этом, чтобы можно было точечно их менять. Другими словами, чтобы при желании я мог изменить css.default.width и только его. А сейчас получается, мне нужно либо не перекидывать css вообще, чтобы withDefaults сработал, либо перекидывать, но при этом засовывать внутрь все стили до единого, вот так:
// Parent

<Child v-bind={
   css: {
      width: '100%',
      border: '1px solid',
      display: 'block',
   }
} />

А я то хочу вот так:
// Parent

<Child v-bind={
   css: {
      width: '100%',
   }
} />

А border и display должны были бы подтянуть дефолтные значения
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега Vue.js
Тлен
Значения по умолчанию для этого не предназначены.
Сделай computed значение в которым смежри входящее с дефалтным как тебе нвдо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы