vue3中element tabs标签页 tab-click事件无法拿到最新值

17,942次阅读
没有评论

共计 1336 个字符,预计需要花费 4 分钟才能阅读完成。

element tabs 标签页有 2 个常用的事件方法,tab-click 和 tab-change

vue3 中 element tabs 标签页 tab-click 事件无法拿到最新值

tab-click 事件

tab-click 事件:当用户点击 Tab 标签时触发,有 2 个返回参数,(pane: TabsPaneContext, ev: Event)
pane.props.name 中可以获取到最新的 tab 页签绑定值

注意:很多人在平常使用的时候并不会从 pane.props.name 中去获取最新 tab 页签绑定值,会直接使用之前的 activeName 作为最新值

问题复现(错误用法):
el-tabs v-model="activeName" @tab-click="handleClick">
    el-tab-pane label="User" name="first">User/el-tab-pane>
    el-tab-pane label="Config" name="second">Config/el-tab-pane>
    el-tab-pane label="Role" name="third">Role/el-tab-pane>
    el-tab-pane label="Task" name="fourth">Task/el-tab-pane>
/el-tabs>

const activeName = ref('first')


const handleClick = (tab: TabsPaneContext, event: Event) => {
  
  

  
  console.log("activeName", activeName.value);  
  
  getTableData()
}


const getTableData = ()=>{
  const params = { tabs: activeName.value }
  getTable().then(res =>{
	console.log('最新数据', res)
   })
}
解决方案:

const activeName = ref('first')


const handleClick = (tab: TabsPaneContext, event: Event) => {
  
  const { name } = tab.props;
  activeName.value = name
  console.log("name", name);  
  getTableData()

  
  nextTick(() => {
     console.log("activeName", activeName.value);  
     getTableData()
  });
  
  
  setTimeout(() => {
    console.log("activeName", state.activeName);  
    getTableData()
  }, 200);
}

tab-change 事件

tab-change 事件:当 Tab 标签页的切换完成时触发,有 1 个返回参数,(name: TabPaneName)
可以直接拿到最新的绑定值


const activeName = ref('first')


const handleClick = (name: TabPaneName) => {
	console.log('name', name) 
	console.log('activeName', activeName.value) 
}

原文地址: vue3 中 element tabs 标签页 tab-click 事件无法拿到最新值

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-11-04发表,共计1336字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)