只是一个简单的问题。
你能强迫Vue.js重新加载/重新计算所有内容吗?如果有,怎么做?
只是一个简单的问题。
你能强迫Vue.js重新加载/重新计算所有内容吗?如果有,怎么做?
当前回答
为了重新加载/重新渲染/刷新组件,停止长编码。Vue.JS可以做到这一点。
只需使用:key属性。
例如:
<my-component :key="unique" />
我正在使用BS Vue表槽。我要为这个组件做一些事情,让它是唯一的。
其他回答
确定. .可以简单地使用key属性在任何时候强制重新呈现(重新创建)。
<mycomponent :key="somevalueunderyourcontrol"></mycomponent>
有关示例,请参见https://jsfiddle.net/mgoetzke/epqy1xgf/
这里也有讨论:https://github.com/vuejs/Discussion/issues/356#issuecomment-336060875
我找到了一个办法。这有点俗气,但很管用。
vm.$set("x",0);
vm.$delete("x");
其中vm是视图模型对象,x是一个不存在的变量。
Vue.js会在控制台日志中抱怨这个问题,但它确实会触发所有数据的刷新。使用版本1.0.26进行测试。
尝试使用这个。$router.go(0);手动重新加载当前页面。
如果你的URL在加载组件时也发生了变化,你可以在:key属性中使用它。如果你直接在router-view标签上使用它,效果会特别好。这与添加的键的benedit是一个实际绑定到页面内容的值,而不仅仅是一些随机数。
<router-view :key="this.$route.path"></router-view>
有两种方法,
你可以在你的方法处理程序中使用$forceUpdate()
<您的组件@click = " reRender ()" > < /组件>
<script>
export default {
methods: {
reRender(){
this.$forceUpdate()
}
}
}
</script>
你可以给你的组件一个:key属性,并在想要渲染时增加
<your-component:key="index" @click="reRender()" > < /组件>
<script>
export default {
data() {
return {
index: 1
}
},
methods: {
reRender(){
this.index++
}
}
}
</script>