Если вы абсолютно уверены, что это не может быть решено с помощью CSS, и вам действительно нужно clientHeight
элемента, вам остается выбрать наименее плохое решение из следующих:
- Pass
id
экземпляра Header
от App
до Content
до Content2
. Затем Content2
используйте селектор запросов, чтобы получить высоту. Это кажется немного менее хрупким, чем Content2
с жестко запрограммированным id
. - Имеет
Header
вычисление своей собственной высоты и выдачу события в App
, которое затем передает высоту в Content
а затем Content2
. Обратите внимание, что вам может потребоваться прослушивать события изменения размера, если высота не фиксирована. - Делайте (1) или (2), но сохраняйте их в Vuex или используйте шину событий вместо передачи параметров.
Выбор того, что вы выберете, зависит не только от того, что представлено в вопросе.
Я бы выбрал (1), если другие компоненты не должны знать высоту Header
.
Я бы выбрал (2), если другим компонентам нужно знать высоту Header
или если экземпляр Header
находится в наилучшем положении для определения собственной динамической высоты.
Я бы выбрал (3), если бы уже использовал какой-то глобальный менеджер состояний.