I have a component which is mounted as part of the DOM rendering. The skeleton of the application is
<!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>
is functional (it displays a few form inputs) and $emit
data to the parent.
Is there a way to re-mount it? The goal is to have a component content and setup as if it was just rendered for the first time (including a reset of the data()
elements which hold its state).
There are some solutions to that but they all assume a rewrite of data()
, which I would like to avoid.
My understanding is that a component is actuall HTML/CSS/JS code injected in the dom in the right place during the rendering so I fear that the concept of "re-mounting" it does not exist - I just wanted to make sure before going the data()-rewrite way.
I've had to do this with a table component that didn't think to include a way to change the data. The trick is to alter the key. When the key changes, vue regards it as a different component. See example, the
created()
hook will only run once, so if you see the value change, you're seeing a brand new object.example: