atnd中Form的useWatch方法
在antd 4之后,在處理表單之間的聯(lián)動關(guān)系時,我們可以使用useWatch,簡單看一下它的具體實現(xiàn)
我們先看一下useWatch.ts
我們把上面的代碼再精簡一下
我們再來看一看registerWatch,notifyWatch以及使用到notifyWatch的updateValue等方法
整個流程就是,registerWatch將callback放到watchList中,在setFields、resetFields以及rc-field-form內(nèi)部的updateValue方法中均會通過調(diào)用notifyWatch去執(zhí)行所有的callback。而在這些調(diào)用notifyWatch的地方,都會先更新store,這樣notifyWatch中才能獲取到最新的value,然后傳遞給callback。useWatch中registerWatch傳入的callback函數(shù),則會判斷新舊value是否一致,然后再去setValue,觸發(fā)更新,渲染頁面。
這種方式效果其實和antd3類似,只要我們watch的field值發(fā)生變化,當前的整個組件都會重新渲染。

標簽: