Передача заводских функций компонентам Dash - PullRequest
1 голос
/ 05 июня 2019

В React компоненту обычно передается фабричная функция, которая сообщает компоненту, как визуализировать его дочерние элементы (например, шаблон render props ).Это обычно происходит, когда компонент должен визуализировать несколько дочерних элементов, которые следуют определенному шаблону.

В Plotly Dash (который является оберткой вокруг React), кажется, что мы можем передавать компоненты другим компонентам посредством композиции, например

app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),
    html.Div(children='''
        Dash: A web application framework for Python.
    '''),
])

Однако кажется, что мы не можем передавать фабричные функции компонентам, поскольку в руководстве это явно запрещено :

Функции JavaScript не являютсядопустимые входные аргументы

Учитывая это, как мы можем имитировать этот шаблон фабричной функции в пользовательском компоненте Dash?Я пытаюсь создать оболочку Dash для act-awesome-query-builder , которая хочет, чтобы я вызывал ее следующим образом, где get_children - фабричная функция, которая возвращает компонент.

<Query 
   {...config} 
   get_children={this.getChildren}
   onChange={this.onChange}
></Query>

Моя текущая идея заключается в том, что мы можем передать компонент шаблона компоненту Query в Dash, который он затем может клонировать с помощью React.cloneElement(), и изменить его реквизиты, позволяя мне использовать его следующим образом:

app.layout = Query(child_template=html.Div("Template"))

Будет ли это работать?Если нет, есть ли способ сделать эти компоненты более высокого порядка в Dash?

...