2 回答

TA貢獻2039條經驗 獲得超8個贊
可以通過兩種方式中止 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
添加回答
舉報