有一个页面,很多场景复用,但是每个场景又有一些区别。这样的话,就要在里面写一堆分支代码,感觉很乱。大佬们有没有什么比较优雅的方法
既然有很多场景复用,那就说明他们存在一定的相似性,或者更直接的说,存在相同的部分。这部分东西肯定是可以复用的。那就可以形成一个统一的东西,比如函数,比如类,或者一个相对复杂组件,或者更复杂的子系统。
每个场景又有一些区别,那这些区别可以通过某些方式注入到可复用物件中的。
对于函数来说,可以通过参数改变其具体行为;
对于类来说,生成的对象实例可以拥有不同的属性;
对于组件来说,有组件属性和事件提供定制化内容;
子系统的生态更为复杂,可扩展的接口也可能会更多(看设计)
如果仅仅是因为分支太多而受到困扰的话,可以去了解一下策略模式。
我的建议是,作为复用组件:
1.如果不同场景的情况比较少,可以在内部做兼容处理,但是并不能保证后续不会有变更
2.采用@HappyCodingTop 的做法,通过插槽(针对Vue),把灵活性暴露出来,组件内部只做复用数据的处理,后续扩展放内容在插槽中实现
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
Vue的可以考虑就是使用作用域插槽把组件封装一下
React可以考虑使用HOC或者自定义hook