这是一个坑,不过可能其他人不会中。我有一个主页面与子页面,主页面跳转到子页面。两个页面用了同一个组件。按理说两个页面的组件应该毫无关系的。可是我发现有关系了。并且这个关系很混乱。产生问题的经过是:我主页面跳转到子页面,然后再从子页面跳转回主页面后,主页面引用的自定义组件事件失效了,然后我找问题,发现组件事件函数没调用,也就是失效了。然后我开始实验并怀疑组件实例被串改,结果发现跳转前与跳转后回来在主页面内点击组件后打印组件自身结果不一致,某个好像标识组件唯一性的id不一样,也就是说跳转前后的组件不是同一个组件。那么最终导致我的主界面调用组件产生的事件没有再次被触发。而出现这种问题的前提是,我用页面往组件公共属性传了一个对象,而这个对象里的方法用来给组件事件处理函数调用,也就是说,我想组件最终会通过这个对象获取一个对象,这个对象里的方法还会处理到主页面里的数据。
如果这不是一个bug的话我想按我的理解我这程序是不会出问题的,前提是主页面引用的组件实例没有被替换成子页面的的组件,也就是说页面与组件直接一一对应。但是通过我的实验发现,从子页面返回主页面后,主页面的组件被替换成了子页面的组件。为何这么说,因为里面的一个id变了,并且传递给组件的对象也变成了子页面里的数据。
这是跳转到子页面前打印的主页面内的组件自身信息。
这是跳转后返回后再次在主页面打印组件自身的信息,
两个信息不一样,可见组件被替换了。按理说连个页面的组件应该没有任何联系啊,为何却因此而产生了复杂关系,从而产生错误。还望官方给出解释。