三种方法:1.使用 Props 传递数据 2.使用$refs
引用子组件 3.给子组件添加key值
1. 使用 Props 传递数据:
- 在父组件中通过修改 props 的值,传递新的数据给子组件,从而触发子组件的更新。
- 在父组件中:
<template> <child-component :dataProp="parentData" /> </template> <script> export default { data() { return { parentData: 'Initial data' }; }, methods: { updateChildComponent() { this.parentData = 'New data'; } } }; </script>
-
在子组件中:
<template> <div>{{ dataProp }}</div> </template> <script> export default { props: ['dataProp'] }; </script>
2. 使用
$refs
引用子组件: - 在父组件中使用
ref
为子组件创建引用,然后通过引用直接调用子组件的方法或访问其数据。 - 在父组件中:
<template> <child-component ref="childRef" /> </template> <script> export default { methods: { updateChildComponent() { // 通过 $refs 调用子组件的方法或访问数据 this.$refs.childRef.someMethod(); } } }; </script>
-
在子组件中:
<template> <!-- 子组件内容 --> </template> <script> export default { methods: { someMethod() { // 在这里可以执行刷新子组件的操作 } } }; </script>
3. 给子组件添加key值:
-
key值变化之后,会自动重新渲染组件,vue中的key的作用主要是为了高效的更新dom, 它也可以用于强制替换元素/组件而不是重复使用它,完成的触发组件的生命周期钩子,触发过渡
-
父组件:
<template> <el-button @click="click">刷新子组件</el-button> <child-component :key="datekey" /> </template> <script> export default{ data(){ return { datekey:Date.now() } }, methods:{ click(){ //这里更新了datekey ,组件就会刷新 this.datekey = Date.now() } } } </script>