2020年6月30日 星期二

[Nuxt] config 檔與 css import 順序有關的警告 & .prettierrc 設定

先上解法
https://github.com/nuxt/nuxt.js/issues/4885
extractCSS: { ignoreOrder: true }

如果在 a.vue import 元件的順序為:

import a
import b

在 b.vue import 順序為:

import b
import a

如此就會報警告:
WARN  Error                                                                                                                                         friendly-errors 15:03:04

chunk 0 [extract-css-chunks-webpack-plugin]                                                                                                          friendly-errors 15:03:04
Conflicting order between:
...

.prettierrc 設定請參考 
它優先度高於 .vscode setting
最常用的例如
{
"semi": false,
"singleQuote": true,
"printWidth": 120
}

2020年4月28日 星期二

[JS] querySelectorAll 取得的 NodeList 是 array 嗎? Array.from()

直接用 Array.isArray('selectedName') 來看就可得知「不是」!
要用 array methods 操作它就要幫它整形

此方法除了轉型,且可以配合箭頭函示遍歷每個 element
(截自MDN)

Array.from([1, 2, 3], x => x + x);      
// [2, 4, 6]

// 產生數值序列
// 因為陣列中的每個位置都會被初始化為 `undefined`,
// 下方 `v` 會是 `undefined`
Array.from({length: 5}, (v, i) => i);
// [0, 1, 2, 3, 4]

2020年2月14日 星期五

[Vue] 避免快速連點

不想讓 user 快速連點觸發 API 的按鈕

<button
:disabled="disabledTrigger"
@click="preventDoubleClick()"
>
click!
</button>

data () {
return {
disabledTrigger: false,
}
},

methods: {
preventDoubleClick () {
let i = 1
this.disabledTrigger = true
const timer = setInterval(() => {
i = i + 1
if (i > 1) {
this.disabledTrigger = false
i = 1
clearInterval(timer)
}
}, 250)
} }

2020年2月11日 星期二

[Vue] vue-router 進入頁面若無帶 query 參數帶入指定 query

情境: 在任意網頁甚至主頁點選進入 /products
會沒有指定 query ( 如 /products?type=food ) 只進入 /products
使其固定帶上 query 方式如下

{
name: 'products',
path: `${rootPath}/products`,
component: () => import(/* webpackChunkName: "courses" */ '../pages/products/').then(m => m.default || m),
beforeEnter: (to, from, next) => {
if (!to.query.type) {
next({
path: to.path,
query: { type: 'food' }
})
}
next()
}
},

2020年1月9日 星期四

[Vue] 關於 v-for 產表單 v-model bind 自定義 dataName

參考自
https://forum.vuejs.org/t/v-model-with-dynamically-created-inputs-with-v-for/9556

這邊遇到問題: 想利用 v-for 產表單, 同時綁不同「已預設好名稱」的 key 。
原先讓 v-model 指向在 data 設好的 name = '', account = '' ... ,  (v-model = 'this.dataName')
但這只會指向記憶體位置的空字串

最後解決方案: data 建立一個物件, 內含符合自己命名的 key , value 為空 ,
並在 v-for items 的 items 塞對應的 key (String) 給 v-model 讀取
描述得不好, 直接上範

<div
v-for="(item, index) in fromApiData"
:key="index"
>
<label for="" class="label form__label w-4/5">{{ item.title }}</label>
<input
class="input form__input w-4/5"
type="text"
:placeholder="item.detail || '未設定'"
v-model="inputCatcher[item.model]"
/>
</div>

// 其他省略

data () {
return {
inputCatcher: {
name: '',
account: '',
},
}
},
computed: {
fromApiData () {
return [
{
title: '名稱',
detail: this.user.name, // user 為從 api 抓到的資料 // model: this.name 原本錯誤的ㄒ
model: 'name'
},
{
title: '帳號',
detail: this.user.account,
model: 'account'
},
]
}
},

[CSS] flex 分散對齊後,最後一行置左

用算的
https://juejin.im/post/5d4556a16fb9a06b2f5f93ff - juejin.im 木匠_随便说说

用 ::after
https://blog.csdn.net/erciyuan_nuonuo/article/details/71773557 - blog.csdn.net

其他狀況, 如子元素不等寬時
https://www.html.cn/web/css/11909.html - html.cn