Python 多选项卡dash应用程序:在不同选项卡中放置'dcc.Store'组件

Python 多选项卡dash应用程序:在不同选项卡中放置'dcc.Store'组件,python,plotly,plotly-dash,Python,Plotly,Plotly Dash,关于在多选项卡结构应用程序中使用dcc.Store的问题。我想保存/存储在选项卡之间切换的数据。我的多页/选项卡dash应用程序结构如下所示: index.py app.py 标签 表1.py subtab1.py subtab2.py tab2.py index.py根据选择呈现每个文件的布局 app.layout = html.Div([ # tabs html.Div([ dcc.Tabs( id=&quo

关于在多选项卡结构应用程序中使用
dcc.Store
的问题。我想保存/存储在选项卡之间切换的数据。我的多页/选项卡dash应用程序结构如下所示:

  • index.py
  • app.py
    • 标签
      • 表1.py
        • subtab1.py
        • subtab2.py
      • tab2.py
index.py
根据选择呈现每个文件的布局

app.layout = html.Div([

    # tabs
    html.Div([

        dcc.Tabs(

            id="tabs",
            vertical=True,
            className="mb-3",
            persistence=True,

            children=[


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

                    )
                 ]),
                 dcc.Tab(label="tab2", value="tab2"),

            ],
            
        )

        ],

        className="row tabs_div"

    ),

        

        # Tab content
        html.Div(id="tab_content"),

])
现在,我想在不同的子选项卡之间交换组件状态/数据
subtab1.py
包含
dcc.Graph
数据表
,'subtab2.py
包含一系列dcc.Graph
组件


我是否需要在
subtab1.py
subtab2.py
中添加
dcc.Store
组件来存储单个组件并从中读取?我希望能够在
subtab2.py
和其他文件中读取
subtab1.py
的组件状态。

您希望将
dcc.Store
组件存储在
index.py
文件中,而不是某个选项卡中

这是因为当您切换选项卡时,
html.Div(id=“tab\u content”)
中包含的所有内容都将消失并成为新选项卡。如果在
subtab1.py
subtab2.py
或甚至在
tab1.py
tab2.py
中添加
dcc.Store
组件,则当您导航到其他选项卡时,这些存储的组件将消失并重置,当您返回到第一个选项卡时,这些组件将丢失。这是假设您正在使用此处()所述的“方法1.Content as Callback”

此外,当您单击一个新选项卡时,如果您希望数据从您放入
dcc.Store
index.py
中的内容中持久化,则需要将其重新加载到新选项卡上。查看此处的“页面加载更新”部分()了解如何将布局作为函数进行结构。这样,您可以在重新加载选项卡时向其提供
dcc.Store
的内容,以便维护从用户第一次使用选项卡时收集的数据

我还建议每个选项卡使用不同的
dcc.Store
,所有这些都存储在
index.py
中。这可能会简化您必须传递给不同选项卡的内容。例如,如果您在
选项卡1
上收集的某些数据独立于从
选项卡2
收集的数据,则无需将
dcc.存储从
选项卡1
选项卡2
以缓存
选项卡2
数据。但是,您的
选项卡3
可能需要来自
选项卡1
选项卡2
的数据,因此您可以向
选项卡3
的布局输入两个与
dcc相对应的输入。存储与
选项卡1
选项卡2
相对应的组件。但是,另一种选择可能是使用一个
dcc.Store
,它是一个字典,其键为
tab 1
tab 2
,对应于要从每个选项卡存储的数据。我不完全确定从性能角度看,一种方法是否比另一种方法好得多,但我个人更喜欢在每个“用户输入集合”选项卡上使用不同的
dcc.Store
,为了便于组织,我随后可以在“编译/输出/可视化”选项卡上使用它。它还允许您以不同的方式保存来自不同选项卡的信息(例如,每个会话或内存),如果这对您的应用程序有意义的话