1. ホーム
  2. python

[解決済み] マルチタブダッシュアプリ:2つのタブ間でデータを共有する

2022-02-26 02:24:21

質問

マルチタブのダッシュアプリで、各タブのスクリプトが別ファイルになっています。

dcc.Tabs(

            id="tabs",
            persistence=True,

            children=[


                 dcc.Tab(label="Tab1", value="tab1",
                         children=[dcc.Tabs(id="subtabs", 
                            children=[
                                      dcc.Tab(label='subtab1', value='subtab1'),
                                      dcc.Tab(label='subtab2', value='subtab2')
                            ],

                    )
                 ]),
            ],
        )

ユーザーがボタンをクリックしたときに値を計算し、subtab1内のコンポーネントにレンダリングします。

# subtab1.py

layout = html.Div([

             dbc.Input(
                       id="value1",
                       persistence=True,
                      ),

             dbc.Input(
                       id="value2",
                       persistence=True,
                      ),
])

# Callback

@app.callback(Output('value1', 'value'),
              [Input('value2', 'value')])
def resetInput(value):

    return value

では subtab2.py この計算された値を、この値をレンダリングするコンポーネントに渡したい。

# subtab2.py

    layout = html.Div([
    
                 dbc.Input(
                           id="value3",
                           persistence=True,
                          ),

    ])

    # Callback

    @app.callback(Output('value3', 'value'),
                  [Input('value-from-subtab1', 'value')])
    def resetInput(value):
    
        return value

異なるタブ間でデータを共有する方法はありますか?これは、複数ページ/タブのダッシュアプリケーションにとってかなり便利な機能でしょう。

どのように解決するのですか?

私が思うに これは素晴らしい解決策になるでしょう . を使用します。 dcc.Store コンポーネントを使用してデータを入れ、それを読み出すことができます。最初のタブはそれに出力し、2番目のタブはそれを読み取ることができます。