美文网首页
vuex☞组件之间的监听

vuex☞组件之间的监听

作者: 小学生的博客 | 来源:发表于2018-02-08 11:22 被阅读92次
情景:

关闭弹窗后,父组件中输入框自动获取焦点。


eg
  • 解决一:直接将el-dialog写在父组件中,就不存在父子关系,这样在关闭前,直接让输入框获取焦点。
  • 缺点:代码清新度不高,不够模块化,假如存在多个dialog,所有代码扔一块,不方便管理维护。

优化方案:

  • 解决二:将dialog抽取出来,作为单一的模块,掌管自己的逻辑。
  • 缺点:假如涉及到比较多的数据交互,对于状态的管理会增加业务量。
  • 优点:代码清晰度高,分模块管理。
    具体步骤:①使用vuex保存状态,在el-dialog before-close之前发送获取焦点指令
    ②在父组件中,监听这个状态值(状态值改变时候就执行获取焦点的方法)。关于如何获取焦点可以参考前面的文章elementUI el-input focus

貌似狠简单的样子,不就是vuex,操作状态的改变么?呵呵

代码片段

//子组件
<template>
  <el-dialog title="请录入唯一码" 
             ......
             :before-close="removeData"
             :lock-scroll="false"
  >
    ......
  </el-dialog>
</template>
   ......
   methods: {
      ...mapActions([
        'setInputFocus',
      ]),
     
      // dialog  关闭之前
      removeData() {
        this.setInputFocus(new Date())  //这个才是关键中的关键
      },
  }
//父组件中
 computed: {
      ...mapState([
        'inputSubFocus',
      ]),
    },
 watch: {
      'inputSubFocus': 'needFocus'
    },
methods:{
 needFocus() {
        this.$refs.xxx.$el.querySelector('input').focus();
      },
}
state
export default {
  inputSubFocus: '',
}
actions。。。略过

相关文章

  • vuex☞组件之间的监听

    情景: 关闭弹窗后,父组件中输入框自动获取焦点。 解决一:直接将el-dialog写在父组件中,就不存在父子关系,...

  • watch监听vuex值的变化

    用watch去监听vuex里面state值的变化:1、子组件存值: 2、父组件内使用watch去监听vuex值的变化:

  • vue组件传值&vuex

    vue技术分享 目录 vue组件之间的通信 vue中数据监听watch的使用 vuex状态管理 vue-aweso...

  • vue + vuex 全家桶浏览器间数据共享方案

    方案思路: 页面内仍然使用vuex做组件间传值,页面之间使用localstorage传值,并且监听storage事...

  • Vue组件之间的传值

    Vue父子组件之间的传值(props)兄弟组件 VUEX

  • Vuex

    Vuex是为了保存组件之间共享数据而诞生的,如果组件之间有要共享的数据可以直接挂载到vuex中,而不必通过父子组件...

  • Vuex

    1.Vuex的概述 Vuex是实现组件全局状态数据管理的一种机制,可以方便组件之间数据的共享。 Vuex管理组件的...

  • vue-ts

    vue-typescript 组件之间传递;vuex;

  • 2018-03-25vue状态管理工具(vuex)

    vuex是为了保存组件之间数据的共享而诞生的,如果组件之间有要共享的数据,可以直接挂到vuex中区,而不必再通过父...

  • 状态管理(全局数据共享)

    vuex解决跨组件之间数据共享问题

网友评论

      本文标题:vuex☞组件之间的监听

      本文链接:https://www.haomeiwen.com/subject/pdzzzxtx.html