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

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

在这里插入图片描述

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
### 实现 Vue3 Element Plus `el-tab-pane` 切换标签页时刷新页面数据 为了实现当用户点击不同的 `el-tab-pane` 时能够触发页面数据的重新加载,可以通过监听 `tab-change` 或者自定义事件来达到目的。具体方法如下: #### 使用 `@tab-click` 事件处理函数 在模板部分绑定 `@tab-click="handleTabChange"` 来响应用户的交互操作。 ```html <template> <div class="tabs-container"> <el-tabs v-model="activeName" @tab-click="handleTabChange"> <!-- 动态渲染多个 tab pane --> <el-tab-pane :key="pane.name" v-for="(pane, index) in panes" :label="pane.label" :name="pane.name"> {{ pane.content }} </el-tab-pane> </el-tabs> </div> </template> <script lang="ts"> import { ref, onMounted } from &#39;vue&#39;; export default { setup() { const activeName = ref(&#39;first&#39;); let panes = [ { label: "First", name: "first", content: "" }, { label: "Second", name: "second", content: "" } ]; function handleTabChange(tab: any) { console.log(`Selected Tab Name is ${tab.paneName}`); // 获取当前选中的标签名称[^2] fetchDataBasedOnActivePane(); } async function fetchDataBasedOnActivePane(){ try{ switch(activeName.value){ case &#39;first&#39;: // Fetch data specific to first tab and update state accordingly. break; case &#39;second&#39;: // Similar logic as above but tailored for second tab&#39;s requirements. break; default: throw new Error("Unexpected tab selected"); } }catch(error){ console.error("Failed fetching data:", error); } } return { activeName, panes, handleTabChange }; } }; </script> ``` 此代码片段展示了如何利用 TypeScript 和 Composition API 结合的方式去构建一个动态更新内容的功能。每当选择了新的标签页时就会调用 `fetchDataBasedOnActivePane()` 函数执行相应的异步请求并更新视图状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值