:父组件点击后,子组件页面内容不更新(参数已经传递,子组件并没有对新参数进行调用)
解决方法:
在父组件页面中:
给引入的 需要更新的子组件中添加:
<business-form-dialog-template @submit="receiveOrder">
<order-apply-form :key="timer"/> //添加key
</business-form-dialog-template>
父组件的点击方法中添加:
handleAddOrder() {
this.timer = new Date().getTime(); //添加此方法即可
}
父组件data中添加:
timer: ''
这样即可解决:在父组件中打开子组件显示,子组件进行页面的created、mounted后,隐藏子组件,再次使子组件显示时,子组件的数据并不会更新,只是简单的隐藏和显示。
原理是:
有时候我们需要这个组件每次都重新生成dom 元素,每次都执行created() 函数
这时候就用到了vue中的key 属性。
key属性和react 的key属性基本上一样
key 属性不是给开发人员用的,而是用来 给vue 元素渲染的时候用的,每次渲染的时候会去拿这个key 值做对比,如果这一次的key 值和上一次的key值是不一样的才会重新渲染dom 元素,否则保持上一次的元素状态。
根据这个原理我们可以给key 直接绑定一个 时间戳