antd不同版本中message的一些变化
随着antd的不断更新,message方法逐渐从一个可以在全局随处调用的方法,变成了一个需要手动插入到jsx中的组件。
最开始的message方法,根据传入的配置项,调用React.render(不同react版本对应不同渲染方法)将内容渲染到页面上,这样实质上是在页面上创建了一个新的react app,所以存在一些上下文的问题,我们之前开发,就经常碰到confirm方法的button,总是会出现国际化的问题。

rc-notification 3.x

antd4的时候,提供了useMessage的hook,可以将hook返回的context手动添加到页面当中,这样,就不需要再调用React.render方法进行渲染了,因为message元素已经被手动添加到了页面当中,只需要再调用返回的message方法进行控制就可以了,其实就有点像Modal了。


这样的好处就是message也处于当前整个react应用的上下文之中,可以像其他组件一样使用整个antd的配置项,但是每次使用message,都需要手动插入,非常麻烦。
我们开发过程中,当然是代码能少则少,在很多使用Modal的地方,如果只是非常简单的一些操作,通过会使用Modal提供的一些静态方法,好处就是像message一样,能够随意调用,极为方便。
所以在antd5的时候,就出现一个折中的方案,那就是App组件。我们可以在将react应用使用App组件包裹,在下级页面中调用useApp返回的message方法,就可以了,不用每次都手动将message实体插入到页面当中。


