Как создать компонуемую оболочку, которая оборачивает другую компонуемую единицу, с помощью Binding.scala

Я экспериментирую, создавая компонуемые компоненты, используя binding.scala. Я хотел бы иметь компонент, который можно использовать для переноса других передаваемых компонентов. Например: компонент карты, который оборачивает стилизованный прямоугольник вокруг любой другой произвольной функции @dom. Я попробовал несколько подходов, но понял, что из-за макроса @dom типы кажутся более сложными, чем кажутся.

Ниже я включил подход, который не работает, но показывает намерение. Я хочу иметь возможность вызывать wrapperMarkup и передавать его contentMarkup.

Я нашел много примеров, когда данные передаются в функцию @dom и обрабатываются, но нет примеров, показывающих, как передать другую функцию @dom или результаты вызова @dom.

Есть ли хороший способ сделать это?

type MarkupFun = ()=>Binding[Div]

@dom
def contentMarkup():Binding[Div] = {
  <div>card Content</div>
}

@dom
def wrapperMarkup(f:MarkupFun):Binding[Div] = {
  //<div>card wrapper {f.bind}</div> // What I want that doesn't work 
  <div>card wrapper {contentMarkup().bind}</div> // works but not what I want.
}

1 ответ

Вскоре после того, как я разместил вопрос, я нашел очевидный ответ. Мне не удалось вызвать функцию до вызова bind.

@dom
def wrapperMarkup(f:MarkupFun):Binding[Div] = {
  <div>card wrapper {f().bind}</div>
}

Но любые другие рекомендации передовой практики были бы хорошими.

Другие вопросы по тегам