1、forceUpdate()
Vue双向数据绑定用过vue的应该都知道,双向数据绑定一般都只能用于简单数据类型的数据。那复杂类型数据该怎么办呢?
场景1:当你点击列表编辑按钮跳转详情时,需要赋值,如果是数组,赋值之后再添加发现数据有了但是页面确没有更新,或者页面更新了,input输入框却无法输入,这时候就用到了forceUpdate()方法了。
场景1:
// 已有值array
array.push('')
// 只操作了push可能会出现没有更新的现象
this.forceUpdate()
场景2:
// 同样如果是input输入框,如果没有效果
@input="update"
update () {
this.forceUpdate()
}
2、赋值使用
(1)当列表返回数据发现只返回code码时,传统的if/else过于繁琐
const sexJson = {
1: '男',
2: '女',
3: '未知'
}
const sexCode = 1
{
return sexJson[sexCode] // 男
}
(2)当某一个页面既是添加也是编辑页面,保存的时候需要调用两个方法,之前同样的方法需要写两次
// isAdd === true: add; false: change
import { handleAddFunc, handleChangeFunc } from '文件名'
const funcDataName = isAdd ? handleAddFunc : handleChangeFunc
funcDataName(res).then(res =>{
// 返回逻辑
})
3、当后端返回的级联数据我们只需要前几层时
export function getTreeData (level = data.length, data = []) {
// 循环遍历json数据
for (let i = 0; i < data.length; i++) {
if (data[i].children.length < 1) {
// children若为空数组,则将children设为undefined
data[i].children = undefined
} else {
// children若不为空数组,则继续 递归调用 本方法
if (data[i].level === level) {
data[i].children = undefined
} else {
getTreeData(level, data[i].children)
}
}
}
return data
}
4、导出时如果后端返回base64的数据时,我们需要将数据转换成blob
// res: 返回的base64数据
export function exportQuestionNaireRes (params) {
return request({
url: '/v1/export',
method: 'POST',
data: params,
responseType: 'blob' // 接收文件流
})
}
const title = '导出文件名字'
const blob = new Blob([res], {
type:
'application/vnd.ms-excel'
})
const url = window.URL.createObjectURL(blob)
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveOrOpenBlob(blob, `${title}.xls`)
} else {
const a = document.createElement('a')
a.href = url
a.download = `${title}.xls`
a.style.display = 'none'
document.body.appendChild(a)
a.click()
URL.revokeObjectURL(a.href)
document.body.removeChild(a)
}
})
5、当展示的数据为key: value的时候,value的长度不固定
.value {
overflow: hidden;
display: -webkit-box;
white-space: break-spaces;
word-break: break-all;
-webkit-line-clamp: 1; /* 限制只有一行 */
-webkit-box-orient: vertical;
}