Как создать компонуемую оболочку, которая оборачивает другую компонуемую единицу, с помощью 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>
}
Но любые другие рекомендации передовой практики были бы хорошими.