其实以前也有一些用户跟我纠结过这个问题,他们觉得一定要在需要的时候创建这个组件才是符合他们思维的做法。在我看来,这是没有理解『状态驱动的界面』的一种表现。
传统的命令式 (Imperative) 的思维写出来的代码:
$('.open-modal').on('click', function () {
var modal = new Modal()
modal.$appendTo('body')
modal.open()
})
// 在 modal 内部还要处理关闭、销毁自身的逻辑
状态驱动的思维写出来的代码:
this.showModal = true
// 关掉
this.showModal = false
哪个干净,哪个容易理解、容易测试、容易维护?
从模板的角度来看:在父模板里直接写入
题主可能会觉得总是渲染
另外一个情况是,我们可能需要在一个嵌套了很多层的子组件里面触发 modal。这种情况下,你应该把 modal 放在根组件里面,然后从子组件触发一个事件上去。