vue.js:634 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever t

2023-05-16

   其实是前两天了解了v-mdel的原理

<!-- v-model原理-->
<div id="demo">
 <input :value="value" @input="price=$event.target.value">
</div>

<script>
 new Vue({ 
   el:'#demo',
   data:{
      price:1000 
   }
})
</script>

然后想使用v-model原理 应用到父子组件的通信中(父传子,子传父)

先展示一下代码:

<body>
    <!-- 本组件 -->
    <div id="demo">
        <!-- 父传子 把变化的变量传递 -->
        <currency-input :value="price" @input="(val) => (price = val)">
            </currentcy-input>
    </div>
    <script>
        // 全局组件
        Vue.component('currency-input', {
            template: `
         <span>
          <input
           :value="value"
           @input="$emit('input', $event.target.value)"
          >
         </span>
        `,
            props: ['value'],
        })
        //vue实例
        var demo = new Vue({
            el: '#demo',
            data: {
                price: 1000
            }
        })
    </script>
</body>

在浏览器中的展示:

在父组件中修改应用的子组件的input中的值(子传父)和data中的值(父传子)都能实现双向绑定

 

                          在子组件中修改input中的值能实现(子传父)

                                 但是修改 props中的值就会报如下错:

 原因:

 父组件通过props传值给子组件,子组件改变props的属性值导致;,先看一眼官方文档:

父子组件中的数据流是单向的,父子之间形成了一个单向绑定:父级data的更新会向下流动到子组件中,但是反过来子修改props则不行。(父组件更新,子组件中的props值也会更新,但子组件不能修改props值再传给父组件);

解决方案:

将传递给子组件的数据改为对象形式,在子组件中用对象属性去渲染:

    <!-- 本组件 -->
    <div id="demo">
        <!-- 父传子 把变化的变量传递 -->
        <currency-input :value="price" @input="(val) => (price = val)">
            </currentcy-input>
    </div>
    <script>
        // 全局组件
        Vue.component('currency-input', {
            template: `
         <span>
          <input
           :value="value.num"
           @input="$emit('input', $event.target.value)"
          >
         </span>
        `,
            props: ['value'],
        })
        //vue实例
        var demo = new Vue({
            el: '#demo',
            data: {
                price: {
                    num: 1000
                }
            }
        })
    </script>


将传过去的数据改为对象,再用对象属性去渲染,确实不会报警告了!!!

 这样虽然解决但是根据官方文档的翻译,我们可以理解为props中的属性最好避免改动,已经提醒你了,出错了算你自己的。所以方案二是最优方案

解决方案二:

       我们可以在data中重新定义相应的属性来接收props中的属性。

  <!-- 本组件 -->
    <div id="demo">
        <!-- 父传子 把变化的变量传递 -->
        <currency-input :value="price" @input="(val) => (price = val)">
            </currentcy-input>
    </div>
    <script>
        // 全局组件
        Vue.component('currency-input', {
            template: `
         <span>
          <input
           :value="price"
           @input="$emit('input', $event.target.value)"
          >
         </span>
        `,
            props: ['value'],
            data: function () {
                return {
                    price: this.value
                }
            }
        })
        //vue实例
        var demo = new Vue({
            el: '#demo',
            data: {
                price: 1000
            }
        })
    </script>

 

   

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue.js:634 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever t 的相关文章

  • vue中使用Echarts地理地图并结合高德地图实现一个国、省、市、区的地图下钻功能

    vue中使用Echarts地理地图并结合高德地图实现一个国 省 市 区的地图下钻功能 一 需求 按不同的层级展示不同的内容 1 中国地图 2 省级地图 3 市级地图 4 县和区以下的地图 二 开发 1 Echarts和地图容器的设置 相关代
  • 前端实现导出excel表格(合并表头)

    需求 勾选行导出为excel表格 合并表头 一 安装插件 npm install save file saver xlsx 运行项目报如下警告的话 运行npm install xlsx 0 16 0 save 来降低版本号 最初我安装的版本
  • 解决vxe-table复选框翻页选中问题

    解决vxe table复选框翻页选中问题 根据vxe table官方文档 想要保留勾选中的数据 我们的代码中需要设置 row id 和 checkbox config中的 reserve 属性 vxe table官方文档 简单写下html部
  • Element Plus 配置自动按需引入后,手动引入组件,组件样式丢失

    起因 最近在尝试使用 Element Plus 写一些简单的页面 跟着官方文档走配置了自动按需引入 npm install D unplugin vue components unplugin auto import vite config
  • vue:实现锚点双向滚动/文章章节联动滚动效果

    文章目录 需求描述 实现思路 示例代码 参考网址 需求描述 需要实现类似doc中文档大纲的效果 点击对应章节的名称时定位到相应的正文 而当正文滚动时 高亮显示对应的章节名称 实现思路 其实笔者一开始想到的是利用a标签页内跳转 也就是 锚点
  • Vue 组件化

    什么是组件化 任何一个人处理信息的逻辑能力都是有限的 所以 当面对一个非常复杂的问题时 我们不太可能一次性搞定一大堆的内容 但是 我们人有一种天生的能力 就是将问题进行拆解 如果将一个复杂的问题 拆分成很多个可以处理的小问题 再将其放在整体
  • 上拉加载原理

    实现思路 之前写过一篇触底加载 经过一番苦学钻研 优化一下 样式方面 滚动区域是给固定高度 设置 overflow y auto 来实现 接下来看看js方面的实现 其实也很简单 触发的条件是 可视高度 滚动距离 gt 实际高度 例子我会使用
  • vue prop属性使用方法小结

    Prop 一 基本用法 Prop的基本用法很简单 作用是在子组件中接收父组件的值 父组件传值
  • vue实现拍照人脸识别功能带人脸选中框

    前言 实现打开摄像头 并识别人脸 实现效果 实现步骤 一 安装 1 官网下载 tracking js 的代码包官网入口 2 npm下载 执行命令 cnpm install tracking save 二 demo案例代码
  • vue 子父组件间的那些事儿——搭建项目(一)

    一 搭建vue项目 1 环境准备 基于nodejs vue cli cnpm 搭建vue项目 由于本博主已经具备以上环境 现在直接进行项目搭建 环境准备可参考这篇博客 https blog csdn net xcymorningsun ar
  • vue项目使用视频播放器vue-video-player

    安装使用 插件有版本限制 如果项目使用的是vue2 0版本 请选择安装 4 x版本 否则会安装不成功 yarn add vue video palyer save 或者 npm install vue video palyer save 组
  • 前端将List列表转化为树型结构(reduce函数)

    主要用到了reduce 函数 for循环可以做到的事情reduce 都可以做到 甚至操作起来更加简单方便和高雅 reduce 为数组中的每一个元素依次执行回调函数 不包括数组中被删除或从未被赋值的元素 reduce语法 array redu
  • 大事件项目07----10,11,12未录

    1 如果三方jar包对应的对象 2 来自第三方 是无法用 Component及衍生注解生命bean的 3 使用Maven命令 引入jar包 4 这里我们准备了jar包 也提前准备好了jar包的脚本 5 通过本地的方式来安装maven的坐标
  • 黑豹程序员-自定义表单实现门户自定制

    功能 用户可以实现欢迎页面自己定制 数据由数据库表进行维护 原理 页面利用div进行布局 拖动div记录其坐标 并写库 页面加载时从数据库表中读取div坐标和数据即可 效果图
  • vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

    一 实现效果 使用echarts实现省市地图绘制 根据数据在地图显示柱状图 根据数据显示数据 涟漪效果 二 实现方法 1 安装echarts插件 npm install echarts save 2 获取省市json数据 https dat
  • Vue学习之watch侦听器:案例实现翻译功能

    watch侦听器 作用 监视数据的变化 当数据发生变化时 执行一些业务逻辑或者是异步操作 执行的场景例如在线翻译 当文本区域的内容发生变化时 会发生翻译内容的同时更新 语法 简单的写法 简单数据类型 可以直接的进行监听 完整的写法 添加额外
  • [黑马程序员TypeScript笔记]------一篇就够了

    文章目录 1 TypeScript 介绍 TypeScript 是什么 TypeScript 为什么要为 JS 添加类型支持 TypeScript 相比 JS 的优势 2 TypeScript 初体验 安装编译 TS 的工具包
  • 【vue】$bus 跨组件调用方法

    1 新建bus js import Vue from vue 使用 Event Bus const bus new Vue export default bus 2 main js引用 import bus from libs bus Vu
  • (vue)el-popover鼠标移入提示效果

    vue el popover鼠标移入提示效果 效果 代码
  • vue项目日期处理day.js

    dayjs安装 1 npm 安装 npm install dayjs save 2 项目使用 import dayjs from dayjs ES 2015 dayjs format 使用介绍 1 秒 获取或设置秒 接受0到59的数字 如果

随机推荐

  • 详细解读Python豆瓣电影Top250网页爬取(主要对re的运用&excel保存数据)//包括对库的简介

    python里面有很多操作都类似于c语言 xff0c 这里在爬取时主要需要注意用到的是for循环语句和各种库 个人认为python中主要还是对库的运用比较占大比例 xff08 这里的软件版本是PyCharm 2020 3 2 x64 xff
  • Unity3D 委托和事件的优点(一)

    上周接触到了委托 这周终于在自己的项目中用到了 现在准备用委托和事件的方案 替换掉之前的一些使用不足的解决方案 在此感谢前辈们的优秀文章 我是根据在网上阅读的文章 通过自己的见解 并在自己的项目中进行实践 得出了一些结论与大家分享 我认为这
  • 我的保研经历——中国科学院计算技术研究所

    忙碌了大半年的保研事情已经尘埃落定了 xff0c 心理也踏实下来了 xff0c 总想着把自己的这段保研经历记录下来 xff0c 希望能对小伙伴们有所帮助 能来到ZZ并且读软件工程这个专业并且阴差阳错的进了卓越班也算是老天注定吧 xff08
  • 无限循环:while True+if...break(打破循环) 用法

    span class token keyword while span True span class token punctuation span p span class token operator 61 span span clas
  • freertos的核心---线程与调度

    一 划重点 划重点 划重点 线程就是freertos运行管理的最小单位 一个线程有自己的生命周期 可以是一段时间也可以是forever 具体看开发人员对于线程的规划 几个线程 每个线程处理什么事情 先来看看线程长啥样 xff1f xff08
  • freertos通信---信号量与队列

    嘿嘿 又见面了 到这里 任务的调度和切换 你已经有了深刻的理解 接下来 自然而然就是任务间的通讯咯 把相关的任务串联起来 就形成了程序的基本架构 一 队列 为什么要先讲解队列了 因为信号量就是利用队列来实现的 走 一起瞅瞅 1 1队列的创建
  • freertos通讯---信号量与队列

    哈喽 又见面了 一 信号量 1 1创建二进制信号量 define xSemaphoreCreateBinary xQueueGenericCreate UBaseType t 1 semSEMAPHORE QUEUE ITEM LENGTH
  • 关于python调用C++

    关于python调用C C 43 43 查了很多相关资料 xff0c 可以通过ctypes模块 SWIG等一些方法 简单的类似单个头文件单个cpp文件都可以实现 xff0c 但是大恒给的C 43 43 包含驱动程序 xff0c 需要在属性里
  • freertos通讯-通知

    通知是什么 xff1f 其实我们之前就见过 它就在任务结构体中 再来回顾下 if configUSE TASK NOTIFICATIONS 61 61 1 volatile uint32 t ulNotifiedValue volatile
  • freertos软件定时器

    哈喽 这篇文章是freertos解析的最后一篇文章 我们将会讲解一个利用任务延时实现的软件定时器 1 创建 timer结构体和创建一目了然 看看初始化函数 是不是有点熟悉 timer的管理有点类似任务的管理 如果是第一次创建则初始化time
  • 蓝牙5.1的ble那些事儿

    既然要说5 1的那些事儿 那么必须的聊聊蓝牙4 0 本文就不在此长篇大论班门弄斧了 要了解4 0的同学请出门左拐直接去参考蜗窝科技大佬的文章 本人觉得对于想入门全面了解4 0的同学 此文章是不二选择的经典 在此只有膜拜的份了 不是广告哈哈
  • 蓝牙5.1的ble那些事儿

    到这里 对于非连接状态应该有一些新的认识了 接下来 顺其自然当然就是连接了 你谈对象 忙活半天 当然是想干点什么事情了 当然也有老司机翻车 连接上后 一端要主动向另一端发起问候 否则长时间不联系 那么就断开好了 主动问候的一端我们称之为ma
  • Http auth认证的两种方式Basic方式和 Digest认证

    Http Basic Auth 方式 当访问一个Http Basic Auth 网站的时候需要提供用户名 xff0c 密码 xff0c 否则会返回401 without authoration Http Basic Authenticati
  • while无限循环

    无限循环写法while 1 循环体内部可以用break语句跳出循环 while 1
  • 不同操作系统下的程序入口点分析

    转自 http hi baidu com liu bin0101 blog item 03e3a9ec4e0fd5d72e2e21b9 html 程序入口与编译器没有什么关系 关键是链接链接器 UNIX的用的ld和WINDOWS下用的LIN
  • rv-player 不靠谱之rvio

    最近忽然发现为动画组写过的一个maya内置工具不能用了 xff0c 工具的作用是使用rvio hw exe转换playblast出的tif序列图 xff0c 生成带watermark的mov文件 之前在Maya2013上一直用的好好地 xf
  • 树莓派 Raspberry Pi SD卡系统备份与还原

    近半年时间用来监控陆龟的树莓派 Raspberry Pi 还算稳定 xff0c 可到了冬天龟箱里的加热灯长时间加热导致树莓派温度很高 xff0c 时不时的自动重启 如果每次都能正常起来也就罢了 xff0c 可偶尔会挂不上SD卡的文件系统直接
  • 2022-12-18 CMakelists指定CMAKE_BUILD_TYPE为Debug或者Release

    今天编译代码的时候遇到古怪的事情 xff0c 在Cmakelists txt中指定了编译版本 xff0c build的时候输出一句 xff1a cpptools The build configurations generated do n
  • 5.FreeRTOS任务切换的简易分析

    FreeRTOS任务切换的简易分析 架构 xff1a Cortex M3版本 xff1a FreeRTOS V9 0 0前言 xff1a 之前分析了创建任务 启动调度器 xff0c 在做完这些工作后 xff0c 就是该完成所有RTOS的最核
  • vue.js:634 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever t

    其实是前两天了解了v mdel的原理 lt v model原理 gt lt div id 61 34 demo 34 gt lt input value 61 34 value 34 64 input 61 34 price 61 even