React开发AntD并写modal和switch遇到的bug
- switch和modal连写,无法添加less
笔者在开发大项目时候用了React+AntD1.x版本+less,遇到一个bug,1.x官网上的例子switch和Modal在html上是并列结构,switch的开关控制modal的显示和隐藏。
由于开发任务的划分,我需要做一个switch操作modal的子组件,我直接沿用官网的文档,在html结构上switch和modal是属于并列的,交互功能完全正常,但是在修改样式时候无法对子组件的modal进行修改。
- 怎么解决?
这种样式bug我借助同时的经验,利用背景颜色测试类名的样式到底有没有添加进去,在这里我发现modal的背景颜色有添加,但是modal下的其他类名的背景颜色没有。 - 我推断是类名没有被正确添加上
翻开后台查找类名,所有类名都被添加上了,但是我的less有正确的被引入啊?less有了类名正确。 - 猜测就是less的结构问题
花了半个小时一个字符的扣样式添加,查看结构,发现结构没有问题。 - 总结情况:1.类名没有错 2.less没有错 3.less已经被正确的编译和引入
根据我和官网的代码差异,我的下一个猜测是组件化的影响 - modal和switch放在子组件,与父组件通讯之后子组件的的便签会被antD做一个转化,modal和switch会被拆分成若干个div和不同的样式。
- 官网的是modal和switch是直接转化的,但是我多了组件这一层,嵌套的过程中大的modal外层是可以修改样式,内部节点不行。
- 最终我的解决方法是:去掉modal的盒子类名,直接写内部节点的类名,成功修改了样式。但是疑问来了,为什么这么做可以修改样式?