问答

如何优雅的管理组件状态?

作者:admin 2021-09-24 我要评论

在移动端component要切来切去的,下面这样写感觉很乱, 想知道有没有更优雅的处理方式? detailShow = false; contactShow = false; searchShow = false; homeSho...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

在移动端component要切来切去的,下面这样写感觉很乱,

想知道有没有更优雅的处理方式?

detailShow = false;

contactShow = false;

searchShow = false;

homeShow = true;

goBackHome() {

this.detailShow = false;

this.contactShow = false;

this.searchShow = false;

this.homeShow = true;

}

goContact() {

this.homeShow = false;

this.detailShow = false;

this.searchShow = false;

this.contact = true;

}

goSearch() {

this.homeShow = false;

this.detailShow = false;

this.contactShow = false;

this.searchShow = true;

}

###

用一个字符串变量 showPage 控制显示

this.showPage === 'home' 时显示home页面
this.showPage === 'detail' 时显示detail页面
以此类推

跳转方法也是写一个就好了

show(page) {
    this.showPage = page;
}
###

建议使用常量控制状态,
例子:
`

const enum PAGE_STAT {
    LOADING,
    UPDATE,
    ADD,
    DELETE
}

或者

 const enum PAGE_STATE {
    HOME_PAGE: 'HOME',
    DETAIL_PAGE: 'DETAIL_PAGE',
   ...
}

`
主要是防止魔法数字,或者魔法字符串(有值无意),比如用 新增 :1 , 编辑:2,删除:3
`
if(type === 1 ) { // 新增
}

修改
const enum STATE{

ADD: 1,
UPDATE : 2

}
if(type === STATE.ADD) { //新增
}
`

###

推荐使用 hooks 库:https://hooks.umijs.org/
~~

###

如果你是想统一这几个函数,可以使用下面的函数

goPage(page) {
    const arr = ['detail', 'contact', 'search', 'home'];
    arr.forEach(item => {
        this[`${item}Show`] = page.toLowerCase() === 'item'
    });
}

如果你是想有优化这几个状态值,由于具体的业务逻辑我不清楚,所以没什么太好的建议

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 如何优雅的管理组件状态?

    如何优雅的管理组件状态?

  • vue 某个页面不需要引入 main.js中的全

    vue 某个页面不需要引入 main.js中的全

  • windows 下nginx 只有在nginx安装目录

    windows 下nginx 只有在nginx安装目录

  • laravel 用model的方法 分组查询信息

    laravel 用model的方法 分组查询信息

腾讯云代理商
海外云服务器