本文示例代碼已上傳至我的
Github
倉庫https://github.com/CNFeffery/dash-master
大家好我是費老師,Dash
不久前發佈了其2.15.0
版本,新增了一些實用的特性,下面我們就來一起get其中的重點😉:
1 在瀏覽器端回調中獲知觸發來源
熟悉Dash
應用開發的朋友應該知道,針對編排了多個Input
角色的常規回調函數,我們可以通過dash.ctx.triggered_id
等上下文信息,在每次回調函數被觸發時,知曉究竟是哪個Input
角色觸發了本次的回調函數執行,就像下面這個簡單的例子所展示的那樣:
app1.py
import dash
from dash import html
import feffery_antd_components as fac
from dash.dependencies import Input, Output
app = dash.Dash(__name__)
app.layout = html.Div(
[
fac.AntdSpace(
[
fac.AntdButton(
'按鈕1',
id='button1',
type='primary'
),
fac.AntdButton(
'按鈕2',
id='button2',
type='primary'
)
]
),
fac.AntdParagraph(id='demo-output')
],
style={
'padding': 50
}
)
@app.callback(
Output('demo-output', 'children'),
[Input('button1', 'nClicks'),
Input('button2', 'nClicks')],
prevent_initial_call=True
)
def handle_button_click(nClicks1, nClicks2):
return '本次回調觸發來源:{}'.format(
dash.ctx.triggered_id
)
if __name__ == '__main__':
app.run(debug=True)
而從2.15.0
版本開始,瀏覽器端回調中同樣也支持在回調函數中拿到triggered_id
信息,在上面例子的基礎上,我們將常規回調函數改造爲下面的瀏覽器端回調函數,來看看dash_clientside.callback_context
中包含了哪些信息:
app.clientside_callback(
'''(nClicks1, nClicks2) => {
// 打印本次回調上下文信息
console.log(dash_clientside.callback_context)
}''',
Output('demo-output', 'children'),
[Input('button1', 'nClicks'),
Input('button2', 'nClicks')],
prevent_initial_call=True
)
Dash < 2.15.0
Dash >= 2.15.0
可以看到,在新版本中,瀏覽器端回調中的回調上下文信息新增了triggered_id
信息,更加方便了~
2 調試模式下更方便清晰的錯誤提示
另一項重要的新特性是面向像費老師我這樣的Dash
組件庫開發者的,可以在組件底層自定義需要在Dash
的debug
工具頁面中顯示的錯誤提示信息,從而大幅度提升普通Dash
應用開發者的日常體驗😉~
以由我開源維護的網頁通用組件庫fac
中的進度條組件AntdProgress
爲例(https://fac.feffery.tech/AntdProgress
),其percent
參數用於設置進度值,取值應在0到1之間:
得益於新版本Dash
在底層對於自定義錯誤提示的支持,我就可以在AntdProgress
底層對不符合規範要求的參數值進行檢查,並通過Dash
調試模式自帶的前端控件輸出更清晰的錯誤提示(下面的例子僅做簡單演示,我會在由我維護的一系列Dash
組件庫後續的版本升級中逐步形成更清晰完整的錯誤提示體系):
更多有關2.15.0
版本更新內容的信息請移步https://github.com/plotly/dash/releases/tag/v2.15.0
。
以上就是本文的全部內容,對Dash
應用開發感興趣的朋友,歡迎添加微信號CNFeffery
,備註“dash學習”加入我的技術交流羣,一起成長一起進步。