2 回答
TA贡献2039条经验 获得超7个赞
可以通过两种方式中止 Dash 回调。您可以引发dash.exceptions.PreventUpdate
异常以中止整个回调,也可以dash.no_update
为您不想更新的每个输出返回。
TA贡献1804条经验 获得超7个赞
关于提前中止回调的选项是正确的,但这并不能解决循环回调的问题(React.jsunderneith中的限制dash)。
关于高级回调的dash文档有一些如何避免循环回调的建议:https ://dash.plotly.com/advanced-callbacks 。
从 dash v1.19.0 开始,您可以在同一回调中创建循环更新。
不支持涉及多个回调的循环回调链。
循环回调可用于保持多个输入彼此同步。
诀窍是将您的两个回调替换为具有多个输出的单个回调,并dash.callback_context.triggered在回调中使用以检测哪些输入被修改以触发回调。您可以使用no_update仅更新需要更改的输出。是这样的:
from dash import callback_context, no_update
@app.callback(
Output("url", "search"),
Output("useridPicker", "value"),
Output("datePicker", "date"),
Input("url", "search"),
Input("useridPicker", "value"),
Input("datePicker", "date"),
)
def update_form_default(url_search):
changed_inputs = [
x["prop_id"]
for x in callback_context.triggered
]
if "url.search" in changed_inputs:
return no_update, 111, dt.today()
else:
return f"?userid=111&date=2020-06-29", no_update, no_update
添加回答
举报