記事ディレクトリ
序文
フロントエンド開発ではリンクパラメータなどの情報を使うことが避けられないので、色々な取得方法を一緒に記録してみましょう
1. 独自の取得
各種リンク情報の取得
window.location
オブジェクトは、
次のメソッドを使用して現在のページのアドレス (URL) を取得し、https://editor.csdn.net/md?not_checkout=1&articleId=131126631
対応する値を取得します。
location.href
現在のページのアクセス パス。「https://editor.csdn.net/md?not_checkout=1&articleId=131126631」を返します。location.hostname
Web ホストのドメイン名。「editor.csdn.net」を返します。location.pathname
現在のページのパスとファイル名は、「/md/」を返します。location.port
Web ホストのポート (80 または 443)、
「」を返します。location.protocol
使用される Web プロトコル (http: または https:) は、
「https:」を返します。location.search
パス クエリ パラメーター、「?not_checkout=1&articleId=131126631」を返すlocation.hash
現在の場所のハッシュ。存在する場合は、「#」で始まります。
最も一般的に使用されるのは、現在の接続パラメータ データを取得することですが、対応する値はネイティブに解析されていないため、リンク パラメータ オブジェクトを自分で手動で解析する必要があります。
/**
* 获取链接参数为对象
*/
fun = (url) => {
const search = url.split('?')[1]
const searchArr = search.split('&')
let params = {
}
searchArr.forEach((item) => {
const param = item.split('=')
params[param[0]] = param[1]
})
console.log(params)
return params
}
fun(location.href);
リンクジャンプページ
location.href
の値を直接置き換えるだけです。
たとえば、ページをスキップしてbaidu.com
直接 しますlocation.href = 'https://baidu.com'
。値が異なるプロトコルのリンクにジャンプする場合は、Web プロトコルを使用する必要があることに注意してください。同じプロトコル内のリンク調整はページ パスで直接置き換えることができます。
通常の開発では、リンク パラメータに変換してページをジャンプする必要があるオブジェクト値が頻繁に発生します。たとえば、次のオブジェクトはリンク パラメータとして渡されます。
const params = {
"articleId": "131126631",
"not_checkout": "1"
}
getParamsString = (params) => {
let urlSearch = ''
let connector = '?'
for(const x in params) {
urlSearch += `${
connector}${
x}=${
params[x]}`
connector = '&'
}
return urlSearch
}
console.log(getParamsString(params)) // ?articleId=131126631¬_checkout=1
ページの更新
location.reload()
_を実行
2、Vueの取得
リンクパラメータを取得する
1. を使用してvue-router
( Vue3
) を取得します。この種の値は、setup
有効になるために、または対応するライフサイクルで実行する必要があります。そうでない場合は、表示されます。undefined
import {
defineComponent } from 'vue'
import {
useRoute } from "vue-router"
export default defineComponent({
setup() {
const route = useRoute()
console.log(route)
return {
}
}
次の情報が含まれます。
fullPath
リンク パス名とパラメータ部分、つまりネイティブlocation.pathname
+location.search
hash
現在の場所のハッシュ。存在する場合は、「#」で始まります。同じlocation.hash
matched
コンポーネントの {@link routing records} 配列が含まれ、リダイレクト レコードや対応するサブルートなどの情報も含まれます。meta
簡単に言うと、各ルートが運ぶ情報であるルーティング メタ情報です。name
ルーティング設定の名前params
ルーティング設定パラメータ ({ path:'/user/:id', name:“users”, …} の id など)path
リンクパス名、と同じlocation.pathname
query
リンクパラメータ、オブジェクト形式redirectedFrom
リダイレクト元情報
2. 設定外(vue2、vue3
全て取得可能)の場合、例えばフック内で取得する必要がある場合は、ルーティング設定ファイルを取得することで取得可能
import Vrouter from "@/router"
Vrouter.currentRoute.value.query // vue3
Vrouter.currentRoute.query // vue2
href
以下の図によると、上記よりフィールドが1 つ多く、同じであることがわかります。fullPath
3. 図に示すように、使用してthis.$route
取得します (このライフサイクル内で使用する必要があるvue2、3
場合は、すべて利用可能です)。3
...
created() {
console.log('this.$route', this.$route)
},
...
ジャンプ操作
1.this.$router.push()
取得するために使用します (このライフサイクル内で使用する必要があるvue2、3
場合は、すべて利用可能です)3
- ルーティングパスに従ってページをジャンプする
this.$router.push(path, query) // path:路由路径,query:参数信息
- ルート名に従ってページを移動し、ルート設定と組み合わせて対応する
params
接続パラメータを割り当てます。
this.$router.push(name, params) // name:路由名称,params:参数信息(需要结合路由配置)
this.$router.push('Register', {
id: '123456'})
// 路由配置如下:
{
path: '/register/:id',
name: 'Register',
component: () => import('@/views/home/register/index'),
},
2. インポートを使用してvue-router
ページをジャンプします (Vue3
利用可能)。有効にするためには、対応するライフサイクルuseRoute
でsetup
実行する必要があります。そうでない場合は、表示されますundefined
。値の渡し方は最初のポイントと同じ、任意のパス名またはページにジャンプするパスアドレス(共通方法)
import {
defineComponent } from 'vue'
import {
useRouter, type LocationQueryRaw } from "vue-router"
/**
*
* @param path 路由地址
* @param query 参数信息
*/
const goTo = (path: string, query: LocationQueryRaw = {
}) => {
const router = useRouter()
router.push({
path, query: query
})
}
export default defineComponent({
created() {
goTo('/')
},
setup() {
// goTo('/')
}
})