这段时间一直在使用react + Ant Design开发项目,但是当自己封装组件的时候却踩了坑。
在开发react项目中受控组件已经是老生常谈的事情了,但是当自己封装Input组件的时候发现就算不绑定onChange事件也能正常使用,查阅官方文档后发现value必须始终传字符串
官网地址: https://react.docschina.org/reference/react-dom/components/textarea#controlling-a-text-area-with-a-state-variable
但是为什么在使用Ant Design的时候初始值传undefined就没有问题呢,那肯定是Ant Design已经做过处理啦。查看源码就可以发现Ant Design其实依赖于react-component的包。
可以看到在绑定value的时候其实是经过了fixControlledValue的处理了的,如果值为undefined或者null就返回空字符串