您的位置:首页 > 财经 > 产业 > 莘县网站开发_深圳产品设计师_seo网络推广机构_百度识图在线识别

莘县网站开发_深圳产品设计师_seo网络推广机构_百度识图在线识别

2025/1/5 13:41:14 来源:https://blog.csdn.net/KBK2020/article/details/144883294  浏览:    关键词:莘县网站开发_深圳产品设计师_seo网络推广机构_百度识图在线识别
莘县网站开发_深圳产品设计师_seo网络推广机构_百度识图在线识别

点击取消按钮,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…

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com