如何在Plotly Dash中跨页面访问dcc.Store的值?
解决Dash跨页面访问dcc.Store的报错问题
报错原因
你遇到的错误是因为dcc.Store组件的正确数据属性是data,而非value,误用value会触发组件不支持该属性的报错。
解决步骤
修正数据写入逻辑(page1.py)
在向getComm存储数据的回调中,将输出目标改为data属性,示例:@callback( Output('getComm', 'data'), Input('page1-trigger', 'n_clicks'), State('page1-input', 'value'), prevent_initial_call=True ) def save_to_store(n_clicks, input_val): return input_val # 将需要跨页面共享的数据存入data修正数据读取逻辑(page2.py)
在读取存储数据的回调中,将输入属性改为data,示例:@callback( Output('page2-display', 'children'), Input('getComm', 'data') ) def load_from_store(stored_data): if not stored_data: return "未获取到跨页面数据" return f"跨页面共享数据:{stored_data}"确保dcc.Store处于全局布局
你的index文件中已添加dcc.Store(id='getComm'),需保证它位于所有页面都能访问的全局层级(比如app.layout的最外层容器内),这样多页面的回调才能正常访问到这个存储组件。
额外注意事项
- Dash 2.x及后续版本中,dcc.Store统一使用
data属性存储和读取数据,不存在value属性; - 跨页面共享数据时,只要dcc.Store在全局布局中,不同页面的回调就能通过组件ID直接访问其
data属性,无需额外配置跨页路由。
内容的提问来源于stack exchange,提问作者optimistic-orange
相关产品推荐
相关产品推荐

