antd不同版本中message的一些變化
隨著antd的不斷更新,message方法逐漸從一個(gè)可以在全局隨處調(diào)用的方法,變成了一個(gè)需要手動(dòng)插入到j(luò)sx中的組件。
最開始的message方法,根據(jù)傳入的配置項(xiàng),調(diào)用React.render(不同react版本對(duì)應(yīng)不同渲染方法)將內(nèi)容渲染到頁面上,這樣實(shí)質(zhì)上是在頁面上創(chuàng)建了一個(gè)新的react app,所以存在一些上下文的問題,我們之前開發(fā),就經(jīng)常碰到confirm方法的button,總是會(huì)出現(xiàn)國際化的問題。

rc-notification 3.x

antd4的時(shí)候,提供了useMessage的hook,可以將hook返回的context手動(dòng)添加到頁面當(dāng)中,這樣,就不需要再調(diào)用React.render方法進(jìn)行渲染了,因?yàn)閙essage元素已經(jīng)被手動(dòng)添加到了頁面當(dāng)中,只需要再調(diào)用返回的message方法進(jìn)行控制就可以了,其實(shí)就有點(diǎn)像Modal了。


這樣的好處就是message也處于當(dāng)前整個(gè)react應(yīng)用的上下文之中,可以像其他組件一樣使用整個(gè)antd的配置項(xiàng),但是每次使用message,都需要手動(dòng)插入,非常麻煩。
我們開發(fā)過程中,當(dāng)然是代碼能少則少,在很多使用Modal的地方,如果只是非常簡(jiǎn)單的一些操作,通過會(huì)使用Modal提供的一些靜態(tài)方法,好處就是像message一樣,能夠隨意調(diào)用,極為方便。
所以在antd5的時(shí)候,就出現(xiàn)一個(gè)折中的方案,那就是App組件。我們可以在將react應(yīng)用使用App組件包裹,在下級(jí)頁面中調(diào)用useApp返回的message方法,就可以了,不用每次都手動(dòng)將message實(shí)體插入到頁面當(dāng)中。


