props: route => ({
p_arr: Array(route.params.arr)
})
ここを
props: route => ({
p_arr: route.params.arr
})
こうすればいいのでは。
Like!
propsで受け取った配列が二重配列になっている原因を知りたい。
Arrrayが二重になってしまっている。
要所以外は省略しています。
<template>
<router-link :to="{ name: 'detail', params: { arr: ['a', 'b'] } }">
</template>
//省略
{
name: 'detail',
path: '/detail',
component: Detail,
props: route => ({
p_arr: Array(route.params.arr)
})
}
//省略
<script>
export default {
props: {
p_arr: Array// [["a", "b"]]
}
}
</script>
- p_arr: Arrayrouter.param.arr
+ p_arr: Arrayrouter.param.arr[0]
0が定義されていないためNG
<script>
export default {
props: {
p_arr: Array// [["a", "b"]]
},
data() {
return {
arr: []
}
},
created() {
this.arr = this.p_arr[0]//応急処置
}
}
</script>
応急処置により、動くは動くきます。
しかし原因が掴めず、モヤモヤしています。
根本的な理解ができていなだけな気がします。
おかしなところがあればご指摘願います🙏v
props: route => ({
p_arr: Array(route.params.arr)
})
ここを
props: route => ({
p_arr: route.params.arr
})
こうすればいいのでは。
@homusuke
Questioner{
"scripts": {
"start": "parcel src/index.html --out-dir public"
},
"devDependencies": {
"@vue/component-compiler-utils": "^3.2.0",
"parcel-bundler": "^1.12.4",
"vue": "^2.6.12",
"vue-template-compiler": "^2.6.12"
},
"dependencies": {
"vue-hot-reload-api": "^2.3.4",
"vue-router": "^3.4.9"
}
}
import Vue from 'vue';
import Router from 'vue-router';
import App from './App.vue';
import Home from './Home.vue';
import Detail from './Detail.vue';
const router = new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'home',
component: Home,
},
{
path: '/detail',
name: 'detail',
component: Detail,
props: route => ({
p_arr: route.params.arr,
}),
},
],
});
Vue.use(Router);
Vue.config.productionTip = false;
new Vue({
el: '#app',
router,
render: h => h(App),
});
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="app"></div>
<script src="index.js"></script>
</body>
</html>
<template>
<div id="app">
<router-view />
</div>
</template>
<template>
<div>
<h1>Home画面</h1>
<router-link :to="{ name: 'detail', params: { arr: ['a', 'b'] } }">
detail
</router-link>
</div>
</template>
<script>
module.exports = {};
</script>
<template>
<div>
<h1>Detail画面</h1>
<router-link :to="{ name: 'home' }">
Home
</router-link>
</div>
</template>
<script>
export default {
props: {
p_arr: Array,
},
created() {
console.log(this.p_arr);
},
};
</script>
$ npm i
$ npm start
@homusuke
Questioner