關(guān)于找到任意組件實例的方法
找到任意組件實例的方法
由一個組件,向上找到最近的指定組件
/**
?* 由一個組件,向上找到最近的指定組件
?* @param {*} context 當前上下文,比如你要基于哪個組件來向上尋找,一般都是基于當前的組件,也就是傳入 this
?* @param {*} componentName 要找的組件的 name
?*/
function findComponentUpward(context, componentName) {
? let parent = context.$parent
? let name = parent.$options.name
? while (parent && (!name || [componentName].indexOf(name) < 0)) {
? ? parent = parent.$parent
? ? if (parent) name = parent.$options.name
? }
? return parent
}由一個組件,向上找到所有的指定組件
/**
?* 由一個組件,向上找到所有的指定組件
?* @param {*} context 當前上下文,比如你要基于哪個組件來向上尋找,一般都是基于當前的組件,也就是傳入 this
?* @param {*} componentName 要找的組件的 name
?*/
function findComponentsUpward(context, componentName) {
? let parents = []
? const parent = context.$parent
? if (parent) {
? ? if (parent.$options.name === componentName) parents.push(parent)
? ? return parents.concat(findComponentsUpward(parent, componentName))
? } else {
? ? return []
? }
}由一個組件,向下找到最近的指定組件
/**
?* 由一個組件,向下找到最近的指定組件
?* @param {*} context 當前上下文,比如你要基于哪個組件來向上尋找,一般都是基于當前的組件,也就是傳入 this
?* @param {*} componentName 要找的組件的 name
?*/
function findComponentDownward(context, componentName) {
? const childrens = context.$children
? let children = null
? if (childrens.length) {
? ? for (const child of childrens) {
? ? ? const name = child.$options.name
? ? ? if (name === componentName) {
? ? ? ? children = child
? ? ? ? break
? ? ? } else {
? ? ? ? children = findComponentDownward(child, componentName)
? ? ? ? if (children) break
? ? ? }
? ? }
? }
? return children
}由一個組件,向下找到所有指定的組件
/**
?* 由一個組件,向下找到所有指定的組件
?* @param {*} context 當前上下文,比如你要基于哪個組件來向上尋找,一般都是基于當前的組件,也就是傳入 this
?* @param {*} componentName 要找的組件的 name
?*/
function findComponentsDownward(context, componentName) {
? return context.$children.reduce((components, child) => {
? ? if (child.$options.name === componentName) components.push(child)
? ? const foundChilds = findComponentsDownward(child, componentName)
? ? return components.concat(foundChilds)
? }, [])
}由一個組件,找到指定組件的兄弟組件
/**
?* 由一個組件,找到指定組件的兄弟組件
?* @param {*} context 當前上下文,比如你要基于哪個組件來向上尋找,一般都是基于當前的組件,也就是傳入 this
?* @param {*} componentName 要找的組件的 name
?* @param {*} exceptMe 是否把本身除外
?*/
function findBrothersComponents(context, componentName, exceptMe = true) {
? let res = context.$parent.$children.filter((item) => {
? ? return item.$options.name === componentName
? })
? let index = res.findIndex((item) => item._uid === context._uid)
? if (exceptMe) res.splice(index, 1)
? return res
}vue常用組件庫
移動端常用組件庫
1.Vant https://youzan.github.io/vant
2.CubeUI https://didi.github.io/cube-ui
3.MintUI https://mint-ui.github.io
3.NutUI https://nutui.jd.com/ // 京東自己的
pc端常用組件庫
1.ElementUI https://element.eleme.cn
2.IViewUI https://www.iviewui.com
2.AntDesignUI https://ant.design/
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于vue2.0實現(xiàn)仿百度前端分頁效果附實現(xiàn)代碼
本文通過實例代碼給大家介紹了基于vue2.0實現(xiàn)仿百度前端分頁效果,在文中給大家記錄了遇到的問題及解決方法,需要的朋友可以參考下2018-10-10
vue + Electron 制作桌面應(yīng)用的示例代碼
這篇文章主要介紹了vue + Electron 制作桌面應(yīng)用,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11
Vue使用antd中input組件去驗證輸入框輸入內(nèi)容(rules?案例)
這篇文章主要介紹了Vue使用antd中input組件去驗證輸入框輸入內(nèi)容-rules-案例,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
web面試MVC與MVVM區(qū)別及Vue為什么不完全遵守MVVM解答
這篇文章主要介紹了web面試中常問問題,MVC與MVVM區(qū)別以及Vue為什么不完全遵守MVVM的難點解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09

