Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue组件另一种传值

vue组件另一种传值

作者头像
tianyawhl
发布于 2021-05-27 03:32:55
发布于 2021-05-27 03:32:55
44200
代码可运行
举报
文章被收录于专栏:前端之攻略前端之攻略
运行总次数:0
代码可运行

我们经常用的组件传值

1、父子组件props传值

2、vuex

如果有2个动态组件,一个是视图一个是参数配置,修改参数配置视图更新,这种情况可以使用父组件触发子组件事件,把对象数据传过去

一个页面左边的视图组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<component :is="currentAddPrevComponent" :propValue="propValue"  :colorPropOptions="colorPropOptions"></component>

右边的编辑组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<component ref="edit" :is="currentEditeComponent"></component>

他们共享颜色colorPropOptions,右边颜色变化,左边视图变化,通过下面的方式传值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.$refs.edit.init(this.colorPropOptions)

如果this.$refs.edit 还没有创建成功需要等创建完成后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          this.$nextTick(()=>{
             console.log(this.$refs.edit)
             this.$refs.edit.init(this.colorPropOptions)             
          })

图表视图组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <highcharts
    :options="chartOptions1"
    style="width: 100%; margin-bottom: 10px; height: 250px"
  ></highcharts>
</template>

<script>
export default {
  props: {
    propValue: Object,
    colorPropOptions: {
      type: Array,
      default: ()=>[
        "#9678da",
        "#05a7f2",
        "#46aead",
        "#f39c12",
        "#564fac",
        "#2fcb78"
      ],
    },
  },
  data() {
    return {
      chartOptions1: {
        colors: this.colorPropOptions,
        chart: {
          type: "column",
        },
        title: {
          text: null,
        },
        xAxis: {
          // categories: ["5-1","5-2","5-3","5-4","5-5","5-6"],
          // categories: this.propValue.categories,
          categories: [],
          crosshair: true,
          gridLineWidth: 1,
          labels: {
            style: {
              fontSize: "14px",
            },
          },
        },
        yAxis: {
          title: {
            text: null,
          },
          lineWidth: 1,
        },

        tooltip: {
          valueSuffix: " Nm³",
          shared: true,
        },
        legend: {
          align: "right",
          verticalAlign: "top",
          y: 0,
          margin: 0,
        },
        plotOptions: {
          spline: {
            marker: { enabled: false },
          },
          column: {
            stacking: "normal",
          },
        },
        series: [
          { name: "name1", data: [5, 5, 5, 5, 5, 5] },
          { name: "name2", data: [11.06, 11.06, 11.06, 11.06, 11.06, 11.06] },
        
        ],
      },
    };
  },
  mounted() {
    console.log(this.chartOptions1.xAxis.categories);
    console.log("item2 mounted");
  },
  watch: {
    propValue: {
      handler(newValue) {
        console.log("watch change");
        console.log(newValue);
        this.chartOptions1.xAxis.categories = newValue.categories;
      },
      //  deep:true,
      immediate: true,
    },
    colorPropOptions(newValue){
      console.log(newValue)
      this.chartOptions1.colors = newValue 
    }
  },
  methods: {},
};
</script>

<style>
</style>

编辑组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
<div>
  <el-color-picker v-for="(item,index) in colorPropOptions" :key="index" v-model="colors[index]"></el-color-picker>
  
</div>  
</template>

<script>
export default {
  props:{editPropOption:Object},
  data() {
    return {
      colorPropOptions:null,
      colors:[],
    };
  },
  mounted(){
 
  },
  methods: {
  init(colorPropOptions){
     this.colorPropOptions = colorPropOptions
     this.colors = colorPropOptions
  }
  },
  watch:{
    // colors(newValue){
    //   console.log(newValue)
    //   this.chartOption.colors = newValue
    //   this.$emit("chageOption",this.chartOption.colors)
    // }
  }
};
</script>

<style>
</style>

这样修改编辑组件的颜色,左边视图变化

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
浅学Vue3
NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。2020年3月17日,Github宣布收购npm,GitHub现在已经保证npm将永远免费。
QGS
2024/01/14
3640
Vue文字滚动插件marquee-components优化
实现单行文字水平滚动,在网上看了一个vue插件 marquee-components
tianyawhl
2021/12/06
4.1K0
一文读懂Vue3组件由浅入深
每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。
QGS
2024/01/18
3780
想成为可视化高手?这篇合集就够了 | Vue
在生活中"可视化"对我们来说其实并不陌生,网站上各大图表频频而出,给我们的视觉也带来很直观的感受。下面我们就"可视化"而言,讨论一下,echarts和highcharts在vue里怎么灵活使用,如何解决出现的问题和难点。
小丑同学
2020/09/21
1.5K0
想成为可视化高手?这篇合集就够了 | Vue
可视化拖拽组件库一些技术要点原理分析
为了让本文更加容易理解,我将以上技术要点结合在一起写了一个可视化拖拽组件库 DEMO:
谭光志
2020/12/22
2K0
可视化拖拽组件库一些技术要点原理分析
Vue 开发必须知道的 36 个技巧【近1W字】
https://juejin.im/user/5ad2d884518825556e5e882a
秋风的笔记
2020/10/27
1K0
vue项目iframe的传值问题
  所以。我把插件的使用封装了一个html页面。vue项目则利用iframe的方式引入。
Dawnzhang
2019/11/21
1.8K0
Vue 开发需掌握这 36 个技巧
https://segmentfault.com/a/1190000020620972
前端老道
2020/07/09
1.9K0
Vue 开发需掌握这 36 个技巧
2020年,vue面试遇到的问题(上)
原文有 36 到 vue 常用面试题,考虑到太多一次也看不完,所以分为 上、中、下三篇,如果你能读完这三篇文章,相信你在面试中 vue 的问题你不会怕了。
桃翁
2020/03/13
2K0
Vue 2.X 文档阅读笔记一 (基础)
当一个 Vue 实例被创建时,它将 data 对象中的所有的属性加入到 Vue 的响应式系统中。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。
前端_AWhile
2019/08/29
3.7K0
Vue---父子组件之间的通信
  在vue组件通信中其中最常见通信方式就是父子组件之中的通信,而父子组件的设定方式在不同情况下又各有不同。最常见的就是父组件为控制组件子组件为视图组件。父组件传递数据给子组件使用,遇到业务逻辑操作时子组件触发父组件的自定义事件。无论哪种组织方式父子组件的通信方式都是大同小异。
半指温柔乐
2018/10/10
7540
vue2知识点:组件自定义事件
父组件给子组件传值使用props属性, 那么需要子组件更新父组件时,要使用自定义事件<font color='red'>\$on和\$emit:</font>
刘大猫
2024/10/27
1340
vue2.0+Element-ui实战案例
我们将会选择使用一些 vue 周边的库vue-cli, vue-router,axios,moment,Element-ui搭建一个前端项目案例,后端数据接口,会使用json-server快速搭建一个本地的服务,方便对数据的增删改查,
小周sir
2019/09/23
2.3K0
vue2.0+Element-ui实战案例
组件中 watch props 根据 v-if 动态判断并挂载 DOM 的问题
问题复现:父组件中通过名为 source 的 prop 向子组件 Chart 传入数据
JS菌
2019/05/16
1.6K0
7.vue组件(二)--双向绑定,父子组件访问
子组件通过属性props: ["cmessage"], 来接收父组件的message属性. 并且父组件修改message的值, 子组件跟随改变
用户7798898
2021/03/04
1.1K0
7.vue组件(二)--双向绑定,父子组件访问
vue学习笔记4
考虑一个问题:想要实现 名 和 姓 两个文本框的内容改变,则全名的文本框中的值也跟着改变;(用以前的知识如何实现???)
用户6362579
2019/09/29
6210
Vue 组件实战
在Vue中我们可以使用插值来展示数据,插值的普通函数,只要页面一刷新,函数就会重新运算,不管和函数有关没关的值都会变,函数也会重新计算,导致运行效率降低;
HammerZe
2022/05/09
9180
Vue 组件实战
Vue3从入门到精通(二)
在Vue3中,侦听器的使用方式与Vue2相同,可以使用watch选项或$watch方法来创建侦听器。不同之处在于,Vue3中取消了immediate选项,同时提供了新的选项和API。
明志德道
2023/10/21
4730
基于vue封装的移动端swiper组件
基于vue封装的移动端swiper组件 直接上代码! App.vue <template> <div> <div class="container"> <h2>移动端轮播图</h2> <div v-if="imgList.length>0"> <Swiper :delay="delay" :duration="duration" :moveRatio="moveRatio"> <swiper-item v-for="(item,ind
hss
2022/02/25
6550
5 种在 Vue 3 中定义组件的方法
英文 | https://fadamakis.com/the-5-ways-to-define-a-component-in-vue-3-aeb01ac6f39f
winty
2023/08/23
4900
5 种在 Vue 3 中定义组件的方法
相关推荐
浅学Vue3
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验