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

问题描述:

在使用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日

相关文章

  • 使用vue3重构拼图游戏的实现示例

    首先我们来讲解一下使用Vue3重构拼图游戏的实现示例。 步骤1:创建Vue3项目和引入所需依赖 创建一个Vue3项目可以使用Vue-cli来完成,安装完毕后,我们需要引入所需依赖。首先是引入Vue3: import { createApp } from ‘vue’ 然后是引入Element UI: import ElementPlus from ‘eleme…

    Vue 2023年5月28日
    00
  • Vue之文件加载执行全流程

    当浏览器加载Vue文件时,需要经过文件加载、解释和执行的过程,以下是Vue之文件加载执行全流程的攻略: 文件加载 首先,浏览器会从服务器端请求Vue文件。如果该Vue文件在浏览器缓存中已经存在,则浏览器直接从缓存中读取该文件,否则,浏览器会向服务器端请求该文件。 当Web服务器收到浏览器的Vue文件请求后,会将该文件返回给浏览器。浏览器接收到Vue文件后,会…

    Vue 2023年5月27日
    00
  • vue项目中一定会用到的性能优化技巧

    当面对Vue.js项目时,优化Vue性能在开发过程中十分重要。下面是几个我们一般应用的Vue.js性能优化技巧: 1. 按需引入组件 在开发Vue.js项目时,我们常常会使用第三方组件库。如果一次性引入所有组件,虽然在开发时提高了效率,但是最终的打包出来的文件会过大,会降低应用性能。因此,应该按需加载组件。此时,可以使用Vue异步组件来将项目分割成建议和异步…

    Vue 2023年5月28日
    00
  • vue中关于_ob_:observer的处理方式

    在 Vue 中,ob 是一个内部属性,用于标记一个对象是否已被 Vue 的观察者系统观察。当把一个对象传递给 Vue 实例后,Vue 会通过响应式的方式将这个对象转化成 getter/setter 对象,并在 ob 属性中添加一个标记,以便后续的处理。 如果一个数据对象被多个 Vue 实例中的 JSON.stringify 或 $watch 观察,那么就会引…

    Vue 2023年5月28日
    00
  • JS实现的tab切换选项卡效果示例

    JS实现的tab切换选项卡效果是一种非常实用的UI交互实现方式,下面我来详细讲解一下这个效果的完整攻略。 准备工作 在实现这个效果之前,需要准备好以下几个内容: HTML结构 tab切换选项卡是基于HTML结构进行实现的,所以需要先准备好选项卡的基本HTML结构。一般来说,一个基本选项卡的HTML结构可能是这样的: <div class="t…

    Vue 2023年5月28日
    00
  • Vue 框架之键盘事件、健值修饰符、双向数据绑定

    Vue 框架之键盘事件、健值修饰符、双向数据绑定 键盘事件 Vue 中可以通过 v-on 指令来绑定 DOM 事件,在处理键盘事件时也不例外。我们可以使用 Vue 提供的 @keydown 和 @keyup 来绑定键盘事件,比如: <template> <div> <p>按下的键盘键是:{{key}}</p> …

    Vue 2023年5月27日
    00
  • Vue2.0+Vux搭建一个完整的移动webApp项目的示例

    要使用Vue2.0和Vux搭建一个完整的移动WebApp,需要按照以下步骤进行: 1. 环境搭建 为了搭建移动WebApp开发环境,需要安装Node.js和npm包管理器。然后在控制台中输入以下命令进行Vue-cli的安装: npm install -g vue-cli 2. 项目创建 在进行项目创建之前,需要选择Vux模板。使用以下命令为你的项目安装Vux…

    Vue 2023年5月28日
    00
  • webpack+vue.js实现组件化详解

    Webpack和Vue.js是现代化的前端开发工具,结合使用可以实现组件化的开发,提高项目的可维护性和开发效率。下面是利用Webpack和Vue.js实现组件化开发的详细攻略。 1. 环境准备 首先,需要安装Webpack和Vue.js。可以使用npm命令进行安装: npm install webpack vue vue-loader vue-templat…

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