{T}

组件实战-Message全局提示组件

学习目标

  • 理解并掌握 组件实战-Message全局提示组件 的核心原理与工程实践

总结

这节我们实现了 Message 组件。

它的核心就是一个列表元素的增删改,然后用 react-transition-group 加上过渡动画。

这个列表可以通过 createPortal 渲染到 body 下。

但是难点在于如何在 api 的方式来动态添加这个组件。

acro desigin 等都是用重新渲染一个 root 的方式来做的,但是这种会报警告,不建议用。

我们是通过 forwardRef + context 转发来实现的:

唯一要注意的问题就是需要直接修改 ref.current,而不是用 useImperativeHandle 来修改。

useImperative 的好处是可以在依赖数组改变的时候重新执行回调函数来修改 ref,但坏处是它不是同步修改 ref 的,有的时候不太合适。

这样,Message 组件就完成了。

这个组件还是比较复杂的,涉及到 ref 转发,context ,过渡动画,portal 等,还封装了两个自定义 hook,大家可以自己写一遍。

继续阅读