vue-routerを使用してシンプルなナビゲーション機能を完成させる記事で実装されたルートナビゲーション機能はパラメータを渡すことができないため、静的ルートになります。パラメータを渡すことができるルーティングモードは、パラメータを渡すことができるため、対応する経路の数が不定であるため、ダイナミックルーティングと呼ばれます。
では、パラメーターをルートとして使用するにはどうすればよいでしょうか?
パラメータ名の前に
:
を追加し、ルートのpath
にパラメータを書き込みます:
,然后将参数写在路由的path
内
如下示例:
routes: [ //将页面组件与path指令的路由关联 { name: 'BookInfo', path: '/books/:id', component: BookInfo } ]
这样定义之后,vue-router
就会匹配所有的:/books/1,/books/2,/books/3 ……
,所以说这样定义的路由的数量是不确定的。
在<router-link>
我们加入一个 params
<li> <router-link :to ="{name:'BookInfo',params :{id:1}}" > <p>首页</p> </router-link> </li>
vue-router
は、/books/1,/books/2,/books/3...
のすべてに一致するため、定義されているルートの数はこの方法は明確ではありません。
<router-link>
に、params
属性を追加して、特定のパラメータ値を指定します<p>当前图书编号是:{{$route.params.id}}</p>ログイン後にコピーログイン後にコピーログイン後にコピーpath: '/books/version/:id'
,则对应params
为:params :{id:1,version:1}
那么现在就面临这一个问题 —— 如何从路由中将这个参数值读取出来呢?
答:通过 $route.params
这个属性获取指定的参数值,如:this.$route.params.id
,this.$route.params.msg
如果希望在相应的组件页面内输出参数值,对应代码如下:
export default { name: "app", created() { alert(this.$route.params.id); }};
如果想在js
代码中根据参数值做相应的处理,则在默认路由中加入如下代码:
<script> export default { name: "app", watch :{ '$route' (to,from){ alert(to.params.id); } } }; </script>
当使用路由参数的时候,如 从
/books/1
到/books/2
上記のリンクは、http://localhost: 8080 に対応します。 /__dirname/books/1
複数のパラメータ値を渡す必要がある場合は、上記の命名方法に従ってパラメータを追加し、対応する宣言されたパラメータ値を params に渡すだけで済みます。定義は自動的にパラメータを分解して値を取得しますcreated mounted
等钩子函数在页面第二次加载的时候回失效。
那么,当复用组件时候,想对路由参数的变化做出响应的话,就需要在 $watch
对象内添加对 $route
对象变化的跟踪函数
{ name: 'BookInfo', path: '/books/:id/?bookName=Lost', component: BookInfo }
$route.params
定义的参数必然是整个路由的其中一部分,vue-router
还可以让我们使用"/path?param = value"
的方式传递参数,可以使用$route.query.参数名
获取参数值vue-router
还提供一种常量参数定义meta
,我们可以在路由定义中先定义meta
的值,然后在路由实例中通过$route.meta
参数获取具体常量值。
如下代码($route.query.参数名
)
{ name: 'BookInfo', path: '/books/:id', component: BookInfo ,meta: { bookName : 'Lost In River' }}
获取其中 bookName
的值的代码为 this.$route.query.msg
如下代码($route.meta.参数名
)
routes: [ //将页面组件与path指令的路由关联 { name: 'BookInfo', path: '/books/:id', component: BookInfo } ]
获取其中 bookName
的值的代码为 this.$route.meta.bookName
在文章 使用vue-router完成简单导航功能 中实现的路由导航功能是不能传递参数的,也就是说是静态路由。
而能传递参数的路由模式,由于可以传递参数,所以其对应的路由数量是不确定的,故称之为 动态路由
那么如何将参数作为路由呢?
在参数名前面加上
:
,然后将参数写在路由的path
内
如下示例:
<li> <router-link :to ="{name:'BookInfo',params :{id:1}}" > <p>首页</p> </router-link> </li>
这样定义之后,vue-router
就会匹配所有的:/books/1,/books/2,/books/3 ……
,所以说这样定义的路由的数量是不确定的。
在<router-link>
我们加入一个 params
たとえば、path: '/books/version/:id'
の場合、対応する params
は次のようになります: params:{id:1,version:1}< /code> </p></blockquote><hr/><p> さて、ここで私たちはこの問題に直面しています - このパラメータ値をルートからどのように読み取るか? </p>回答: <code>$route.params
属性を通じて、指定されたパラメータ値を取得します (this.$route.params.id
、this.$route など)。 params .msg
対応するコンポーネントページにパラメータ値を出力したい場合、対応するコードは以下の通りです:
<p>当前图书编号是:{{$route.params.id}}</p>ログイン後にコピーログイン後にコピーログイン後にコピーpath: '/books/version/:id'
,则对应params
为:params :{id:1,version:1}
那么现在就面临这一个问题 —— 如何从路由中将这个参数值读取出来呢?
答:通过 $route.params
这个属性获取指定的参数值,如:this.$route.params.id
,this.$route.params.msg
js
コードを入力し、次のコードをデフォルト ルートに追加します:
export default { name: "app", created() { alert(this.$route.params.id); }};
/books/1
から /books/2 などのルート パラメーターを使用する場合
では、両方のルートが同じコンポーネントをレンダリングするため、元のコンポーネント インスタンスは再利用され、再利用の販売率はコンポーネントを破棄して再作成するよりも高くなります。 🎜
これは、コンポーネントのライフサイクル フックが呼び出されなくなることを意味します (コンポーネントは破棄されてから作成されません)。つまり、created Mounted
とその他のフック関数は、ページがロードされるときに無効になります。 2回目。 🎜🎜🎜 したがって、コンポーネントを再利用するときに、ルーティング パラメータの変更に対応したい場合は、$watch
オブジェクト内に $route</code を追加する必要があります。オブジェクトの変更の追跡機能 🎜🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;"><script>
export default { name: "app",
watch :{
&#39;$route&#39; (to,from){
alert(to.params.id);
}
}
};
</script></pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><hr/>🎜🎜<code>$route.params
定義されたパラメータはルート全体の一部である必要があります。vue-router
は、 "/path?param = value"
を使用してパラメータを渡します。$route.query.parameter name
を使用してパラメータ値を取得できます🎜vue-router< / code> は定数パラメータ定義 <code>meta
も提供します。まずルート定義で meta
の値を定義し、次に $route.meta を渡すことができます。ルーティング インスタンス。
パラメータは特定の定数値を取得します。 🎜🎜以下のコード($route.query.パラメータ名
)🎜{ name: 'BookInfo', path: '/books/:id/?bookName=Lost', component: BookInfo }
bookName
の値を取得するコードはthis.$です。 Route.query.msg
🎜🎜以下のコード($route.meta.parameter name
)🎜{ name: 'BookInfo', path: '/books/:id', component: BookInfo ,meta: { bookName : 'Lost In River' }}
bookName
の値を取得するコードは< code>this.$route.meta.bookName🎜🎜 vue-router を使用してシンプルなナビゲーション関数を完成するという記事で実装されたルート ナビゲーション関数はパラメーターを渡すことができません。つまり、静的ルートです。 🎜🎜パラメータを渡すことができるルーティングモード、パラメータを渡すことができるため、対応するルートの数が不確実であるため、🎜ダイナミックルーティングと呼ばれます🎜🎜🎜では、パラメータをルートとして使用するにはどうすればよいでしょうか? 🎜🎜🎜パラメータ名の前に :
を追加し、ルートの path
にパラメータを書き込みます 🎜🎜次の例: 🎜rrreee🎜この定義の後、vue-router
は、/books/1,/books/2,/books/3...
のすべてに一致するため、定義されているルートの数はこの方法は明確ではありません。 🎜🎜 <router-link>
に、params
属性を追加して、特定のパラメータ値を指定します🎜rrreee🎜上記のリンクは、http://localhost: 8080 に対応します。 /__dirname/books/1🎜🎜🎜 複数のパラメータ値を渡す必要がある場合は、上記の命名方法に従ってパラメータを追加し、対応する宣言されたパラメータ値を params に渡すだけで済みます。定義は自動的にパラメータを分解して値を取得します🎜
たとえば、path: '/books/version/:id'
の場合、対応する params
は次のようになります: params:{id:1,version:1}< /code> 🎜</blockquote><hr/>🎜 さて、ここで私たちはこの問題に直面しています - このパラメータ値をルートからどのように読み取るか? 🎜回答: <code>$route.params
属性を通じて、指定されたパラメータ値を取得します (this.$route.params.id
、this.$route など)。 params .msg
🎜🎜対応するコンポーネントページにパラメータ値を出力したい場合、対応するコードは次のとおりです: 🎜<p>当前图书编号是:{{$route.params.id}}</p>
如果想在js
代码中根据参数值做相应的处理,则在默认路由中加入如下代码:
export default { name: "app", created() { alert(this.$route.params.id); }};
当使用路由参数的时候,如 从
/books/1
到/books/2
,原来的组件实例会被复用,因为两个路由都渲染同一个组件,比起销毁后再创建,复用的销率会更高。
这也就是说 组件的生命周期钩子不会再被调用(组件没有被销毁后再创建) ,即created mounted
等钩子函数在页面第二次加载的时候回失效。
那么,当复用组件时候,想对路由参数的变化做出响应的话,就需要在 $watch
对象内添加对 $route
对象变化的跟踪函数
<script> export default { name: "app", watch :{ '$route' (to,from){ alert(to.params.id); } } }; </script>
$route.params
定义的参数必然是整个路由的其中一部分,vue-router
还可以让我们使用"/path?param = value"
的方式传递参数,可以使用$route.query.参数名
获取参数值vue-router
还提供一种常量参数定义meta
,我们可以在路由定义中先定义meta
的值,然后在路由实例中通过$route.meta
参数获取具体常量值。
如下代码($route.query.参数名
)
{ name: 'BookInfo', path: '/books/:id/?bookName=Lost', component: BookInfo }
获取其中 bookName
的值的代码为 this.$route.query.msg
如下代码($route.meta.参数名
)
{ name: 'BookInfo', path: '/books/:id', component: BookInfo ,meta: { bookName : 'Lost In River' }}
获取其中 bookName
的值的代码为 this.$route.meta.bookName
相关推荐:
以上がVue.js での動的ルーティングの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。