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
- 表1.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
,为了便于组织,我随后可以在“编译/输出/可视化”选项卡上使用它。它还允许您以不同的方式保存来自不同选项卡的信息(例如,每个会话或内存),如果这对您的应用程序有意义的话