关于el-table表格跳转详情页修改数据后返回,改变表格内容,保存当前页码的功能

关于el-table表格跳转详情页修改数据后返回,改变表格内容,保存当前页码的功能

在工作中,总能遇到一些需求是某个api或者组件无法解决的,这时候就要想其他办法了。

  • 就比如说:前一段时间遇到的,横向滚动条只滚动鼠标滚轮就能够左右滚动的问题。在这随便插一嘴,我不想写这个博客,因为这不是技术问题,是你思维问题,就看你能不能想到。
  • 大概做法就是:如果是文字内容,就将每一行的宽度设置成只能放一个字,然后将文字顺时针旋转90°,然后就肯定会出现竖向滚动条,然后再将整块区域逆时针旋转90°,最后进行将整块区域下降一定的高度进行调整就行了。
在这呢,又遇到了一个需求,表格进入详情页修改了数据之后,返回后也要更新表格数据,但是分页还是要在这个页码上
  • 看到这个需求:分页还是在当前的页码,首先肯定是想到用keep-alive,但是keep-alive是怎么做的,顺便复习一下吧
  • 首先,在默认状态下,组件实例被替换后就会被销毁。而被keep-alive包裹的的组件实例会被缓存下来,可以通过include和exclude,根据组件name进行定制(可通过vite-plugin-vue-setup-extend插件在vue3中直接定义组件name)。如果需要改变组件重新激活,可以使用onActivated() 和 onDeactivated()两个声明周期钩子。
keep-alive很显然不适合
  • 我们使用浏览器自带的缓存localStorage来实现当前的需求
  • 首先,我们在调用接口的时候将页码缓存起来
const onSubmit = (val) => {
  mySetStorage('singlePage', val)   // 这个是我自己封装的localStorage,意义就在于不需要每次使用都要JSON.stringify()
  queryTableList(val);
};
  • 然后,当我们返回页面的时候,获取缓存的页码,handleCurrentChange是分页组件的改变页码的方法,在这里面必须用这个方法,不然不好使,而且获取的页面也要转为数字格式,字符串格式也不好使。
onBeforeMount(() => {
  pageNum.value = myGetStorage('singlePage')
  if (pageNum.value && pageNum.value != 1) {
    handleCurrentChange(Number(pageNum.value))
  } else {
    onSubmit(1);
  }
});
<el-pagination background @current-change="handleCurrentChange" :total="total" v-model:current-page="pageNum"
        v-model:page-size="pageSize" layout=" prev, pager, next" />
  • 最后,我们要在适当的地方清除这个页码,比如:当点击侧边栏更换路由的时候,退出系统的时候,或者我直接没退出,关闭了浏览器,下一次我直接重新登录的时候(写到这,我突然感觉是不是sessionStroage更好一点呢?伙伴们可以自己试试)
  • 注意: 页面卸载时千万不要清空这个缓存,因为我们在点击进入详情页面时,页面也就是卸载了。
小伙伴们,你们如果有什么其他的好办法,欢迎评论区评论,大家一起进步吧,加油,祝大家都年薪百万,嘻嘻。

兄弟们,我拉了啊,其实用keep-alive,返回更新表格数据,在onActived里面执行调用获取列表数据的接口就行了呀,当前页面的值其实是已经缓存了的,只要你的表格数据条数没有变化,那就没问题啊。
我的前端技术,任重而道远啊,害

Vue中,你可以通过监听表单元素的提交事件,并在事件处理函数中获取表单数据,然后将其添加到一个数据数组中。这个数组随后可以被绑定到`el-table`的`data`属性上,从而在表格中显示数据。具体步骤如下: 1. 在`el-form`表单中添加一个提交按钮,并为其绑定点击事件,例如使用`v-on:click`或简写为`@click`。 2. 在该事件处理函数中,通过表单元素或其子元素获取数据,这通常涉及到使用`v-model`进行双向数据绑定。 3. 将获取到的数据添加到一个数组中,这个数组是Vue实例的data属性的一部分。 4. 使用`el-table`的`:data`属性绑定步骤3中得到的数组。 下面是一个简单的示例代码: ```html <template> <div> <!-- 表单部分 --> <el-form ref="form" @submit.native.prevent="handleSubmit"> <el-form-item label="姓名"> <el-input v-model="formData.name"></el-input> </el-form-item> <el-form-item label="年龄"> <el-input v-model.number="formData.age"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="handleSubmit">添加</el-button> </el-form-item> </el-form> <!-- 表格部分 --> <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { // 表单数据 formData: { name: '', age: null }, // 表格数据 tableData: [] }; }, methods: { // 表单提交处理函数 handleSubmit() { // 将表单数据添加到表格数据数组中 this.tableData.push({ ...this.formData }); // 重置表单数据 this.formData.name = ''; this.formData.age = null; } } }; </script> ``` 在上述示例中,当点击提交按钮时,会触发`handleSubmit`方法,该方法会将`formData`对象添加到`tableData`数组中。`el-table`通过`:data="tableData"`将数据绑定到表格中,因此表格会显示新添加的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值