【发布时间】:2018-05-07 16:12:57
【问题描述】:
我有一个作为 DOM 渲染的一部分安装的组件。应用程序的骨架是
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>
<div id="app">
<my-component></my-component>
<button>press this button to reload the component</button>
</div>
</body>
</html>
<my-component> 是功能性的(它显示一些表单输入)和$emit 数据到父级。
有没有办法重新挂载它? 目标是让组件的内容和设置就像是第一次渲染一样(包括重置data() 元素保持其状态)。
有some solutions,但他们都假设重写data(),我想避免这种情况。
我的理解是,组件实际上是在渲染过程中在正确位置注入到 dom 中的 HTML/CSS/JS 代码,所以我担心“重新安装”它的概念不存在 - 我只是想做在采用 data()-rewrite 方式之前确定。
【问题讨论】:
-
为什么要避免重置
data? -
@mklimek:我一直在寻找一种更简洁的方式来重置组件。如果我覆盖
data(),我需要保留原件,或者拥有它的“主副本”(空),或其他类似的东西。我希望重新安装命令可以将其重置为其通用状态。如果没有,这不是世界末日——这对我来说是一个美学问题(和代码简单性)。 -
数据可以用这个方便的单行代码重置(到
data()函数返回的原始值):Object.assign(this.$data, this.$options.data.call(this));
标签: vue.js vuejs2 vue-component vuejs3