Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js (VueJS)在显示时更新组件_Vue.js - Fatal编程技术网

Vue.js (VueJS)在显示时更新组件

Vue.js (VueJS)在显示时更新组件,vue.js,Vue.js,我想要一种在组件重新显示时运行函数(与后端对话)的方法 我知道如果组件通过v-if指令重新添加到DOM中,mounted钩子将触发。但是,如果组件被隐藏并通过v-show指令重新显示,则不会触发。我需要更新组件,不管哪个指令控制它的可见性 我查看了更新的钩子,但这似乎不是缩进的用例 如何在显示组件时运行函数(不仅仅是第一次)?您可以通过几种方式实现这一点。然而,既然你想得到v-show的方式,我建议你这样做 v-show(v-show,watcher): v-show肯定取决于变量(数据或计算)

我想要一种在组件重新显示时运行函数(与后端对话)的方法

我知道如果组件通过
v-if
指令重新添加到DOM中,
mounted
钩子将触发。但是,如果组件被隐藏并通过
v-show
指令重新显示,则不会触发。我需要更新组件,不管哪个指令控制它的可见性

我查看了
更新的
钩子,但这似乎不是缩进的用例


如何在显示组件时运行函数(不仅仅是第一次)?

您可以通过几种方式实现这一点。然而,既然你想得到v-show的方式,我建议你这样做

v-show(v-show,watcher):
v-show肯定取决于变量(数据或计算)。创建一个观察者,以观察数据/计算属性的更改。根据data/computed属性的值,执行您想要在watcher上执行的任何函数。

也许您可以通过两种方式实现它

1.使用
:键
无论何时,无论组件是否显示,都要重新启用组件,更改key的值可以重新启用组件


文本
导出默认值{
数据(){
返回{
key:this.getRandomString()
}
},
方法(){
getRandomString(长度=32){
  设chars='ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
  设max_pos=字符长度;
  让随机_字符串=“”;
  for(设i=0;i
  • 使用
    vm.$forceUpdate()
  • 。。。
    你的方法(){
    //与后端通信
    让data=等待axios.get(…);
    这是.$forceUpdate();
    }
    ...
    
    updated
    在传递到组件的数据发生更改时触发。因此,如果您以
    道具
    的形式在任何条件下传递控制您的
    v-show
    ,则它将起作用

    一般示例:

    Vue.config.devtools=false;
    Vue.config.productionTip=false;
    Vue.component('子'{
    道具:{
    显示:{
    类型:布尔型,
    默认值:true
    }
    },
    模板:“{show}}”,
    安装的(){
    console.log(“子安装”);
    },
    更新的(){
    //任何道具改变时运行
    //(可选条件)仅在显示组件时运行
    如果(如图所示){
    console.log('child updated');
    }
    }
    });
    新Vue({
    el:“#应用程序”,
    数据:()=>({
    真的吗
    })
    })
    
    秀给孩子看
    
    为组件提供一个名为“可见”的必要道具,或类似的道具,并观察其是否存在changes@Phil理想情况下,我正在寻找一种更紧凑的方法来实现这一点。例如,如果我有两个嵌套的
    v-show
    指令,我将不得不注意这两种情况。听起来效率很低。您可以运行一个循环来实现这两种情况.$el
    (说使用)但在我看来,最好是命令式的,通过道具告知组件其可见性。我明白你的意思,但理想情况下,我希望将逻辑封装在组件中。由于组件可以在多个位置使用,并且非常适合通用,我认为此实现有点复杂ponent可能嵌套在多个
    v-show
    子句中。然后我必须将每个条件传递到prop中。不是吗?@Carter,我认为您的模型有点复杂,而不是实现。但您可以轻松简化它:如果您总是将父
    show
    属性添加到子条件中,则显示的父级<代码>将传播到所有子级,任意深度的级别。条件是始终将当前级别的<代码>显示的<代码>添加到任何子级的<代码>显示的<代码>中,并且永不断开链(
    :show=“show&&showChild”
    )。此外,您还有什么其他选择?不管怎样,我们在这里讨论的复杂程度与您的问题要求之间存在差异。请提供a,我可能会建议一个更适合的模型。好的,我将接受您的答案,因为我认为这是最好的答案。我可能稍后再问另一个问题更具体到我的需要(有一些例子)。谢谢你的帮助。