VUE2中,父子组件传参(数组)+动态样式添加

本文介绍了如何在Vue应用中通过<my-list>组件进行传参,展示了数组类型的技能列表,并探讨了组件复用在不同场景的应用,如通过v-for遍历data中的数据。同时,深入解析了MyList组件的模板和props的使用。
摘要由CSDN通过智能技术生成

app.vue

<template>
  <div>
    <!-- 组件传参:数组类型 -->
    <!-- <my-list items="skills" /> -->
    <my-list :items="skills" />
    <!-- 组件的最大用途: 复用性 - 界面相同但是数据不同 -->
    <my-list :items="['亮亮', '亚楠', '小新', '铭铭', '思远']" />
    <!-- 结合for循环使用 -->
    <!-- item是data中的元素, 数组类型 -->
    <my-list v-for="item in data" :items="item" />
  </div>
</template>

<script>
import MyList from './components/MyList.vue'
export default {
  components: { MyList },
  data() {
    return {
      skills: ['html', 'css', 'js', 'express', 'vue'],
      data: [
        ['SQL', 'MySQL', 'Express', 'Node.js'],
        ['CSS', 'SASS', 'boot', 'ajax', 'html'],
        ['js高级', 'dom', 'jQuery', 'vue'],
        ['elementUI', 'vantUI', '微信小程序', 'HTML5高级'],
      ],
    }
  },
}
</script>

<style lang="scss" scoped></style>

组件my-list

<template>
  <div class="list">
    <div>排行榜:</div>
    <!-- <div>{{ items }}</div> -->
    <div v-for="(item, index) in items" class="cell">
      <!-- 动态样式 :class="{类名: true/false}" -->
      <!-- hl样式类, 在 index序号 <= 2 时生效 -->
      <span :class="{ hl: index <= 2 }">{{ index + 1 }}</span>
      <span>{{ item }}</span>
    </div>
  </div>
</template>

<script>
export default {
  // 自定义属性
  props: ['items'],
}
</script>

<style lang="scss" scoped>
.list {
  display: inline-block;
  margin: 0 10px 10px 0;
  width: 200px;
  vertical-align: top;
}

.cell {
  background-color: lightblue;
  margin: 4px;
  padding: 5px;
  border-radius: 3px;
  box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.2);
  transition: 0.2s;
  &:hover {
    padding-left: 20px;
  }
  > span:first-child {
    display: inline-block;
    width: 20px;
    height: 20px;
    background-color: white;
    text-align: center;
    margin-right: 4px;
    border-radius: 2px;
    // 同时带有 class='hl' 的
    &.hl {
      background-color: orange;
    }
  }
}
</style>

在2,父组件向子组件传递参数可以使用Vue提供的prop属性。在父组件定义子组件的标签时,使用冒号加上子组件定义的props属性名,并将要传递的值作为属性值传递给子组件。子组件可以通过props接收父组件传递的值,并在子组件的模板使用。这样就实现了父子组件之间的参数传递。 在上述例子,父组件通过定义sonInfo属性并将其传递给子组件son来实现传参。在子组件son,可以使用props来接收父组件传递的sonInfo属性,并在模板使用。父组件通过sonInfo传递了一个对象,子组件可以通过props接收并在模板展示sonName和sonAge的值。 需要注意的是,父组件传递参数给子组件时,可以使用v-bind指令将一个动态的值绑定到子组件的属性上,也可以直接将一个静态的值传递给子组件的属性。另外,要注意在子组件声明props时,需要指定每个prop的类型和是否必需。这样可以提高程序的可读性和可维护性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue2-父子组件传值](https://blog.csdn.net/h13245/article/details/126822453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记忆怪 bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值