当前位置: 首页 > news >正文

点击取消按钮,console出来数据更改了,页面视图没有更新

点击取消按钮,console出来数据更改了,页面视图没有更新


前言

实现效果:点击取消按钮,页面视图全部为空,
遇到的问题: 点击取消按钮,console出来数据更改了,SchemaJson 都是默认值啦,页面视图没有更新
在这里插入图片描述
方法:使用 key 属性实现局部强制刷新


<template><div class="app-container"><el-form :model="fromModel" label-width="100px" :rules="rules" ref="FormRef" ><el-form-item label="数据格式"><json-schema :schema.sync="fromModel.SchemaJson" :show-default-value="true":is-mock="false"></json-schema></el-form-item><el-form-item><el-button type="primary" :loading="upload.isUploading">确 定</el-button><el-button @click="cancel">取 消</el-button></el-form-item></el-form></div>
</template><script>import jsonSchema from '../json-schema-editor.vue'export default {name: "algorithmCom",components: { uploadCom, jsonSchema },data() {return {upload: {isUploading: false,},fromModel: {SchemaJson: {"type": "object","properties": {},},},rules: {},};},methods: {cancel() {this.fromModel = {SchemaJson: {"type": "object","properties": {},}};this.upload.isUploading = false;this.$nextTick(() => {this.$refs.FormRef.resetFields();});console.log(this.fromModel)},},computed: {},
};
</script>

通过排查发现

使用 key 属性实现局部强制刷新
原理:
在 Vue 中,给组件或者 DOM 元素添加 key 属性,当 key 值改变时,Vue 会认为这是一个全新的元素,从而重新创建和渲染它以及它内部的子元素,达到强制局部刷新的效果。
应用示例:
首先,在你希望实现局部刷新的表单元素外层添加 key 属性,并在 data 中定义对应的响应式数据来控制这个 key 值,比如针对整个 el-form 表单区域进行局部刷新:

   <el-form :model="fromModel" label-width="100px" :rules="rules" ref="FormRef" :key="formKey"> </el-form>

然后在 data 函数里添加 formKey 这个响应式数据:

  data() {return {// 用于控制 key 值变化,实现局部刷新formKey: 0};},

最后,在 cancel 方法中改变 formKey 的值来强制表单区域重新渲染,实现局部刷新:

   cancel() {this.fromModel = {SchemaJson: {"type": "object","properties": {},}};this.upload.isUploading = false;// 改变 key 值,触发局部重新渲染this.formKey++;this.$nextTick(() => {this.$refs.FormRef.resetFields();});},

Ending…

http://www.lryc.cn/news/514485.html

相关文章:

  • web框架在什么程度上受限 ?
  • 实践:事件循环
  • C++ 设计模式:建造者模式(Builder Pattern)
  • SQL偏移类窗口函数—— LAG()、LEAD()用法详解
  • 基于Pytorch和yolov8n手搓安全帽目标检测的全过程
  • [CTF/网络安全] 攻防世界 upload1 解题详析
  • 03-其他
  • EasyExcel自定义动态下拉框(附加业务对象转换功能)
  • 2025.1.2
  • 重庆大学软件工程复试怎么准备?
  • Ant Design Pro搭建react项目
  • mysql连接时报错1130-Host ‘hostname‘ is not allowed to connect to this MySQL server
  • 办公 三之 Excel 数据限定录入与格式变换
  • Ubuntu执行sudo apt-get update失败的解决方法
  • torch.nn.functional的用法
  • 最新常见的图数据库对比,选型,架构,性能对比
  • UE5材质节点Camera Vector/Reflection Vector
  • NextCloud服务安装与配置教程
  • 详解GPT-信息抽取任务 (GPT-3 FAMILY LARGE LANGUAGE MODELS)
  • 华为数通考试模拟真题(附带答案解析)题库领取
  • 微信小程序:正确输出<小于,大于>符号
  • Flink源码解析之:如何根据算法生成StreamGraph过程
  • 矩阵简单问题(Java)
  • Elasticsearch DSL版
  • 2024-12-29-sklearn学习(26)模型选择与评估-交叉验证:评估估算器的表现 今夜偏知春气暖,虫声新透绿窗纱。
  • STM32CUBEIDE FreeRTOS操作教程(十二):std dynamic memory 标准动态内存
  • 异步爬虫之aiohttp的使用
  • 【Rust自学】9.1. 不可恢复的错误以及panic!
  • 【老张的程序人生】一天时间,我成软考高级系统分析师
  • vue使用el-select下拉框自定义复选框