前端大杂烩

常用的一些js计算公式和提醒自己看的东西

2020-03-05  本文已影响0人  写写而已

算法

1.计算一个数最靠近下一个被10或100整除的数,常用于显示折线图y轴数值

// 70
Math.ceil(67/10)*10
// 100
Math.ceil(23/00)*100

Vuex

1.vuex的action默认返回的就是Promise,并且resolve,不需要自己return new Promise就可以使用then接收,如果想要catch,Promise.reject()即可

/* 删除一个tab */
RemoveTab({ commit }, tab) {
    // tabs只有一个时不能删除/
    if (tab.path === '/' && state.menuTabs.length <= 1) {
        return Promise.reject('tabs只有一个时不能删除/')
    }
    commit('REMOVE_TAB', tab)
}

2.遍历state.myArray.splice(index, 1),并不会清空myArray,因为有延迟,要使用赋值

/* 这样并不会得到想要的结果,因为有延迟 */
for (let [index, item] of state.myArray.entries()) {
    if (!item.checked) {
        state.myArray.splice(index, 1)
    }
}

/* 你要这样 */
state.myArray = state.myArray.filter(item => item.checked)

/* 关闭所有,关闭其他tabs */
SET_CLOSE_TABS(state, type) {
    if (type === 'all') {
        state.menuTabs = [{ path: '/', label: 'Dashboard', icon: 'iconfont icon-dashboard' }]
        state.cachedViews = []
    }
    if (type === 'others') {
        state.menuTabs = state.menuTabs.filter(item => item.path == state.currentTab.path)
        state.cachedViews = [state.currentTab.path]
    }
}

Route在组件内的钩子

// vue方法
methods: {},
// 销毁时
destroyed() {
    this.$store.dispatch('SetOpenJobType', { openType: true })
    this.$store.dispatch('SetTaskCurrentTab', { id: '' })
    this.$store.dispatch('ClearTask')
},
// 离开路由时,调用
beforeRouteLeave(from, to, next) {
    this.$confirm('确定退出工作台吗?').then(() => {
        next()
    }).catch(() => {
        
    })
},
beforeRouteEnter(frome, to, next) {
    // 准备进入路由
},
beforeRouteUpdate(from, to, next) {
    //在当前路由改变,但是该组件被复用时调用
}
上一篇下一篇

猜你喜欢

热点阅读