開發中遇到的小問題

Vue開發中遇到的問題

1、選中二級路由高亮時保持它的父路由也保持高亮

給路由添加前置守衛beforeEach(to,from,next) ,在路由前置守衛中判斷要去的路徑信息,如果是二級路由,則給一級路由也加上高亮樣式

直接在路由跳轉標簽中獲取路徑信息,判斷是否需要添加高亮樣式

2、使用? keep-alive 包裹動態組件時數據發生重復渲染

直接把<keep-alive></keep-alive>干掉或者使用exclude屬性讓他直接重新渲染

keep-alive 的三個參數:

include:包含的組件(只有匹配的組件可以被緩存)

exclude:排除的組件(只有匹配的組件不會被緩存)

max:緩存組件的最大值

keep-alive可以包裹<route-view></route-view>使用,也可以配合<Component? :is="aaa"></Component>使用 (其中aaa為動態組件的名稱)

3、vue3.x中廢棄了filter過濾器

vue3.x中新增了setup(),數據、方法、生命周期都定義在了setup()中,響應式數據使用 ref 和 active 包裹

生命周期的名稱也發生了變化,如:beforedestory --> onUnmounted , mounted --> onMounted 并且使用前都需要先從vue中導入

在視圖中需要使用的數據和方法都需要在setup()最后return出去才可以使用

4、vant組件庫 自定義輪播圖大小時 添加外邊距 輪播圖最后一頁顯示不完全

在導入vant庫中的輪播圖 自定義輪播圖大小時,如果加上外邊距,會把最后面的幾個選項擠出范圍導致顯示不全

在使用tab標簽頁時設置寬度,然后向內壓縮形成margin的效果,內容可以顯示完全

5、vant組件庫底部Tabber標簽欄開啟路由模式后,路由跳轉會報錯

問題描述: 使用vant的tabber標簽欄的路由跳轉時,路由可以跳轉,但是會拋出一個錯誤

問題原因:vant與新版本路由不匹配

解決方法:降低路由版本vue-router@3.0.0

6、移動端使用插件進行rem適配

插件:postcss-pxtorem、lib-flexible

// yarn add amfe-flexible

// yarn add postcss-pxtorem@5.1.1

// 在main.js中 導入import 'amfe-flexible'

// 創建postcss.config.js文件,配置

module.exports={

plugins: {

'autoprefixer': {

overrideBrowserslist: [

"Android 4.1",

"iOS 7.1",

"Chrome > 31",

"ff > 31",

"ie >= 8"

? ?? ]

?? },

'postcss-pxtorem': {

rootValue:37.5,

propList: ['*']

?? }

? }

}

7、數據已經拿到但是頁面渲染不出來,在下一次嘀嗒也沒有作用、vue不支持 ?. 的寫法

因為vue不支持 ?. 的寫法

所以如果想要拿到數據并成功渲染需要添加一層判斷 && 表示數據得到后渲染

obj.arr[0] && obj.arr[0].name

8、props父子組件傳值,當接收的數據類型是對象或者數組時 default需要設置為 ()=> {} 、()=>[]的形式

props: {

tableConfig: {

type: Array,

default: () => [

{ label: '日期', prop: 'date' },

{ label: '姓名', prop: 'name' },

{ label: '地址', prop: 'address' }

]

}

}

9、@后添加路徑

// 項目根目錄創建jsconfig.json文件

{

"compilerOptions": {

"baseUrl": ".",

"paths": {

"@/*": ["src/*"]

},

"target": "ES6",

"module": "commonjs",

"allowSyntheticDefaultImports": true

},

"include": ["src/**/*"],

"exclude": ["node_modules"]

}

10、單行、多行文本溢出省略號代替

/* 單行文本溢出隱藏 省略號代替 */

display: block;

white-space: nowrap;

overflow: hidden;

text-overflow: ellipsis;

/* 多行文本溢出隱藏 省略號代替*/

overflow: hidden;

text-overflow: ellipsis;

display: -webkit-box;

-webkit-box-orient: vertical;

/*設置對其模式*/

-webkit-line-clamp: 2;

/*設置多行的行數*/

11、通過cdn引入減小打包體積,配置vue.config.js

module.exports = {

// 發布模式

chainWebpack: config => {

config.when(process.env.NODE_ENV === 'production', config => {

// 通過CDN加載

config.set('externals', {

vue: 'Vue',

axios: 'axios',

echarts: 'echarts',

"element-ui": 'ElementUI',

"vue-quil-editor": 'VueQuillEditor'

})

config.plugin('html').tap(args => {

args[0].isProd = true

return args

})

})

}

}

// 利用webpack的externals,把第三方庫的js文件從打包文件里去掉

externals: {

'vue': 'Vue',

'vue-router': 'VueRouter',

'axios': 'axios',

'element-ui':'ElementUI'

}

12、element-ui中的el-scrollbar

// 外層用一個標簽包裹并設置寬高,給el-scrollbar標簽必須設置height:100%

// 內容區

// 設置樣式時必須添加穿透

.box {

height: 300px;

width: 200px;

}

::v-deep .el-scrollbar__view {

padding-top: 60px;

}

::v-deep .el-scrollbar__wrap {

overflow-x: hidden;

}

13、vue初始化頁面閃動問題

使用vue開發時,在vue初始化之前,由于div是不歸vue管的

所以我們寫的代碼在還沒有解析的情況下會容易出現花屏現象,看到類似于{{message}}的字樣,雖然一般情況下這個時間很短暫,但是還是有必要讓解決這個問題的。

首先:在css里加上以下代碼:

[v-cloak] { display: none;}

如果沒有徹底解決問題,則在根元素加上style="display: none;" :style="{display: 'block'}"

React開發中遇到的問題

1、移動端使用插件vw適配

插件: postcss-px-to-viewport

在react項目中想要配置vw,先將webpack配置暴露出來yarn eject

git提交保存版本

在config的webpack.congfig.js中配置

require('postcss-px-to-viewport')({

viewportWidth: 375, // (Number) The width of the viewport.

viewportHeight: 667, // (Number) The height of the viewport.

unitPrecision: 3, // (Number) The decimal numbers to allow the REM units to grow to.

viewportUnit: "vw", // (String) Expected units.

selectorBlackList: [], // (Array) The selectors to ignore and leave as px.

minPixelValue: 1, // (Number) Set the minimum pixel value to replace.

mediaQuery: false // (Boolean) Allow px to be converted in media queries.

}),

2、react數據拿到但是頁面渲染不出來

為了節約性能,在類組件的render函數里 return模板之前先根據數據進行一層判斷,如果想要的數據還沒有拿到,直接return null;

在函數組件中 return之前加上同樣的判斷,如果數據還沒有拿到就return null;

3、react路由6.x和5.x

路由6.x不再有withRouter,于是在類組件中通過this.props無法拿到路由信息,這時我們便需要封裝HOC高階組件后在類組件中使用

路由6.x在定義路由信息的時候,掛載需要使用標簽內的element={}

路由5.x則可以直接在閉合標簽內部直接使用 ,或者是用標簽中的component={}

4、react的鉤子hooks

在類組件中沒有hook,hook只能在函數組件中使用,但是我們可以通過封裝HOC(高階組件)使類組件中擁有函數組件的hook功能,其中最明顯的用處是拿到路由信息

5、類組件中想要在this.props中獲取路由信息,封裝高階組件

// 創建withRouter.jsx文件,配置

// 引入需要用到的模塊

import { useParams, useLocation, useNavigate, useSearchParams } from "react-router-dom";

// withRouter本質上就是一個組件,它的特點:它的參數是一個組件,它的返回值是一個新組件。

// 我們稱這樣的組件是HOC(High Order Component高階組件),高階組件本質上就是一個閉包的應用

export default function withRouter(Component) {

// 相當于給Student組件添加各種props屬性,還添加三個重要的屬性params,location,navigate

return (props) => (

{...props}

searchParams={useSearchParams()} // 通過里面的get方法可以獲取路徑里傳遞的參數,不需要自己切割

params={useParams()} // 獲取參數

location={useLocation()} // 查看路徑信息

navigate={useNavigate()} // 允許跳轉其他頁面

/>

);

}

6、react 函數組件修改數據方法? 數據刷新數據繼續請求變得更多

建議使用 :

a、箭頭函數 setState((pre)=>([...pre],...res.data))? // 用() 包裹,不是{}

b、擴展重新賦值 setState([...state, ...res.data])

7、redux

import { createStore } from 'redux'

let store =? createStore((state, action) => {

switch (action.type) {

case "setNational": {

return {

...state,

national: action.national

}

break

}

default: {

return {

national: '全國'

}

}

}

})

export default store;

// 獲取數據

store.getState().national

// 修改

this.$store.dispatch({

type: 'setNational',

national: name

})

小程序遇到的問題

輪播圖響應式布局

輪播圖下放置的圖片 <image src="" / >標簽上 添加mode="widthFix"高度根據寬度自適應

<image src="" mode="widthFix" />

樣式中設置圖片寬度100%

swiper image {

width: 100%;

}

但是由于swiper自身有高度,所以換更大屏幕時,圖片仍然顯示不完全,給swiper根據圖片設置高度

// 設計稿iphone6,假設圖片高度150px,則swiper設置高度300rpx

swiper {

height: 300rpx;

}

懶加載獲取到數據總數后 判斷列表長度===total時return但是沒有結束

需要把請求過來的數據里的數據總數進行類型轉換 Number(res.total)才能進入判斷

粘性

cnpm i @miniprogram-component-plus/sticky

使用mp-slideview組件時,添加的提示文字消失不見

// 例如: 左滑可以刪除功能,但是刪除兩個字顯示不出來

標簽中間的內容有圖片的時候如果圖片模式 mode=“widthFix” 會導致左滑顯示的刪除按鈕上內容不顯示

可以設置 mode="aspectFit" 自己定義圖片大小

封裝請求

// 封裝文件夾util/request.js文件

// isHeader判斷是否需要獲取響應頭中的數據

function request(obj, isHeader) {

// 顯示loading

return new Promise((resolve, reject) => {

wx.showLoading({

title: '正在加載中',

})

wx.request({

...obj,

url: 'http://localhost:5000' + obj.url,

success: (res) => {

// console.log(res.header["X-Total-Count"]);

if (isHeader) {

resolve({

list: res.data,

total: res.header["X-Total-Count"]

})

} else {

resolve(res.data);

}

},

fail: (err) => {

reject(err)

},

complete: () => {

// 隱藏loading

wx.hideLoading({

success: (res) => { },

})

}

})

})

}

export default request;

封裝權限管理

// 調用時傳入一個回調函數

function CheckAuth(callback) {

if (wx.getStorageSync('tel')) {

// 直接執行回調函數

callback()

} else {

// 是否存在token

if (wx.getStorageSync('token')) {

// 跳轉綁定手機頁面

wx.navigateTo({

url: '/pages/telform/telform',

})

} else {

// 跳轉綁定微信頁面

wx.navigateTo({

url: '/pages/auth/auth',

})

}

}

}

export default CheckAuth;

// 在生命周期onShow中調用例子,傳入一個回調函數作為參數

CheckAuth(() => {

let { nickName } = wx.getStorageSync('token')

let tel = wx.getStorageSync('tel')

request({

url: url

}).then(res => {

console.log(res)

this.setData({

list: res

})

})

})

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容