<script>
	// предварительно добавляем параметры pen'у
	const url = new URL(location);
	url.searchParams.append('length', 123);
	url.searchParams.append('width', 345);
	url.searchParams.append('height', 678);
	history.replaceState({},'', url);
</script>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script src="https://unpkg.com/vue-router@4/dist/vue-router.global.js"></script>

<div id="app">
	<pre>
length: {{length}}
width: {{width}}
height: {{height}}

watchUpdateCount: {{watchUpdateCount}}
watchUpdateQueryLog: {{watchUpdateQueryLog}}
	</pre>
</div>

<script>
	const app = Vue.createApp({
		data () {
			return {
				// Данные из формы в мм.
				length: this.$route.query.length, // пусто, весь массив query
				watchUpdateCount: 0,
				watchUpdateQueryLog: {},
			}
		}, 
		// Подумал, что во VUE 2 роутер добавлялся как свойство, а здесь в конце после создания объекта
		mounted: function () {
			this.$watch(() => this.$route, (x) => {
				this.length = this.$route.query.length;
				this.width = this.$route.query.width;
				this.height = this.$route.query.height;
				
				this.watchUpdateCount++;
				this.watchUpdateQueryLog[`${
					this.watchUpdateCount
				}: ${
					new Date().toISOString()
				}`] = {...this.$route.query};
				
			}, {deep: true, immediate: true});
		}
	});

	// VueRouter
	const router = VueRouter.createRouter({
		history: VueRouter.createWebHistory(), // раньше был мод хистори, вроде бы это его новый аналог
		routes: []
	});

	app.use(router);
	app.mount('#app');
</script>

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.