element ui时间日期选择器el-date-picker报错Prop being mutated:”placement”解决方式

yizhihongxing

问题描述:

在使用Element UI中的el-date-picker组件时,会出现如下错误:

"Prop being mutated, vue will not trigger updates on this case"

同时在控制台中会出现如下警告:

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "placement"

问题分析:

这个错误提示是因为el-date-picker组件中的属性被直接修改,而vue组件不允许直接修改props中传递的属性值,而应该通过临时变量来存储修改后的值,在合适的时机将其传递给父组件。

解决方法:

  1. 使用计算属性代替直接修改props属性

使用计算属性代替直接修改props属性是解决问题的最简单方法。VueJS提供了计算属性来处理这种情况,我们可以通过计算属性定义一个新的属性,并在计算属性的get和set方法中对新属性进行操作。

例如,在使用el-date-picker组件时,我们需要修改默认的展示位置,可以通过计算属性进行修改:

<template>
  <el-date-picker v-model="date" :picker-options="pickerOptions" :placement="placement"></el-date-picker>
</template>

<script>
export default {
  data() {
    return {
      date: '',
      pickerOptions: {
        shortcuts: [{
          text: '今天',
          onClick(picker) {
            picker.$emit('pick', new Date());
          }
        }, {
          text: '昨天',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24);
            picker.$emit('pick', date);
          }
        }, {
          text: '一周前',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
            picker.$emit('pick', date);
          }
        }]
      }
    };
  },
  computed: {
    placement() {
      // 修改默认位置为bottom-start
      return 'bottom-start'
    }
  }
}
</script>
  1. 使用prop传递复杂对象

以上方法也适用于通过prop传递的复杂对象。在这种情况下,我们需要确保不会改变对象的原始数据和属性,而是通过分配到一个新变量,对分配后的对象进行修改。

例如,在使用v-tooltip组件时,可以将绑定的数据存储在一个包含显示位置的对象中:

<template>
  <div>
    <button v-tooltip="tooltipData">Hover Me</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tooltipData: {
        content: 'Welcome to my tooltip!',
        placement: 'right'
      }
    };
  }
}
</script>

以上就是ElmentUI时间日期选择器el-date-picker报错Prop being mutated:"placement"的解决方式的完整攻略,通过使用计算属性或者传递复杂对象,我们可以避免直接修改props中传递的属性值,以保障代码的正确性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:element ui时间日期选择器el-date-picker报错Prop being mutated:”placement”解决方式 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • 使用Vue完成一个简单的todolist的方法

    使用Vue完成一个简单的Todolist的方法包括以下步骤: 步骤一:创建Vue项目 使用Vue.js官方提供的命令行工具vue-cli来创建一个新项目。具体方法是在命令行中运行以下命令: vue create my-todolist 输入命令后按照提示进行操作,其中需要选择一些配置选项,例如babel、ESLint等。等待命令执行完成后,使用以下命令进入到…

    Vue 2023年5月28日
    00
  • Vue3获取DOM节点的3种方式实例

    下面是Vue3获取DOM节点的3种方式实例的详细攻略: 1. 通过ref引用获取DOM节点 我们可以给DOM元素添加ref属性,然后在Vue模板中通过ref的值进行引用,从而获取DOM节点。具体操作步骤如下: 在Vue模板中添加ref属性 <template> <div> <button ref="btn"&…

    Vue 2023年5月28日
    00
  • 基于vue2.0+vuex的日期选择组件功能实现

    下面是关于“基于vue2.0+vuex的日期选择组件功能实现” 的完整攻略。 1. 确定需求 在开发一个基于 vue2.0+vuex 的日期选择组件之前,首先需要确定几个核心需求: 可以显示当前选择的日期 可以手动选择日期 可以通过快捷按钮选择日期(比如“今天”、“明天”、“本周”等) 可以显示所选日期所对应的具体内容(比如日程安排等) 可以支持选择日期范围…

    Vue 2023年5月29日
    00
  • Vuex中的State使用介绍

    当我们使用 Vue 开发复杂的应用程序时,我们通常会遇到许多组件共享相同的状态数据的情况。在这种情况下,每个组件都必须知道如何获取和操作此数据,这会导致代码的冗余以及困难的维护性。Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 在 Vuex 中,可以以集中化的方式处理共享状态。该模式包括四个核心概念: state: 管理整个应用程序的状态 …

    Vue 2023年5月28日
    00
  • vue函数@click.prevent的使用解析

    当我们使用Vue.js开发前端应用时,经常会在模版中使用@click指令来响应用户的点击事件,在一般情况下,点击事件会导致页面的跳转或刷新等行为,但是有时候我们需要控制点击事件的默认行为,这时候就需要使用@click.prevent修饰符。 @click.prevent能够阻止点击事件的默认行为,例如在表单的提交按钮中使用@click.prevent可以阻止…

    Vue 2023年5月28日
    00
  • vue+elementUI(el-upload)图片压缩,默认同比例压缩操作

    首先需要明确的是,针对 vue+elementUI(el-upload) 图片压缩的操作,实际上是对于上传的图片进行处理,通过 JS 将图片进行压缩,最终实现 web 应用中图片大小的限制。 接下来,我们将分别从以下三个方面对此进行详细讲解: 图片选择与压缩 解决压缩后图片失去原有宽高比例的问题 示例说明 1. 图片选择与压缩 我们可以通过 elementU…

    Vue 2023年5月28日
    00
  • Sublime Text新建.vue模板并高亮(图文教程)

    下面我将为你详细讲解“Sublime Text新建.vue模板并高亮(图文教程)”的攻略: Sublime Text新建.vue模板并高亮(图文教程) 1. 下载Vue Syntax Highlight插件 首先,在Sublime Text中安装Vue Syntax Highlight插件。可以选择在菜单栏中选择“Preferences” -> “Pa…

    Vue 2023年5月28日
    00
  • 详解.vue文件中style标签的几个标识符

    当我们使用 Vue 开发前端项目时,Vue 的单文件组件 .vue 文件中允许我们在 <template> 标签中定义模板、在 <script> 标签中定义 JS 代码、在 <style> 标签中定义 CSS 样式。对于 <style> 标签,Vue 允许我们使用一些特殊的标识符来扩展它们的功能和特性。 下面是…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部