小程序父子组件通信及样式冲突

小程序组件创建

在components文件夹下创建组件 例如 : 如下

使用方式(全局)

在app.json "usingComponents": { "对应组件名": "对应的组件" }, 进行相关配置 在全局就可以使用

使用方式(局部)

上面的方式是全局注册类似于vue项目中 在main.js中 通过vue.component('组件名','组件') 的注册方法

局部的话在需要使用的界面的json中进行注册 和上面的方式一样

例子:

修改子组件的样式

在vue中使用element-ui 或者使用vant 或者是使用其他第三方的组件库 在对组件库的样式出现不满意的情况都会考虑覆盖修改 一般使用 scss就会使用 ::v-deep 或者 :deep() 但是在小程序中没有

小程序样式修改的方式

在子组件中需要通过

js 复制代码
// components/navigation-bar/navigation-bar.js
// 组件 的使用 局部注册 在json => usingComponent:{ }
Component({
  // 小程序支持外界的样式 
  // 组件 允许外界来定制类  将对应的类暴露出去 
  externalClasses: ['custom-class', 'title-class',]
  // 需要通过这样的方式将对应的样式暴露出去
  }
})

在父组件需要

wxml 复制代码
<navigation-bar back custom-class="custom-class"/>
<!-- 暴露出来的类 就是对应的属性 直接赋值父组件的类就ok 类名完全可以随便写 -->
wxss 复制代码
.custom-class {
  color:aqua
}

组件的通信(父传子)

与vue中的使用大致相同 , 但有一点不同的是 我如果直接传过去一个属性 这个属性没有值 默认是Boolean值并且为true

组件的通信(子向父)

父组件定义数据<navigation-bar count="{{count}}" back custom-class="custom-class" /> 子组件接收数据 使用properties

js 复制代码
// components/navigation-bar/navigation-bar.js
// 组件 的使用 局部注册 在json => usingComponent:{ }
Component({
  // 小程序支持外界的样式 
  // 组件 允许外界来定制类  将对应的类暴露出去 
  externalClasses: ['custom-class', 'title-class',],
  /**
   * 组件的属性列表
   */
  options: {
    multipleSlots: true
  },
  properties: {
    // back: Boolean
    // 小程序中子组件 收父组件的数据 默认值使用value属性来声明 不是vue的default
    back: {
      type: Boolean,
      value: false
    },
    count: {
    type:Number,
    value:0
    },
    // 在小程序中接受数据 需要通过 value当默认值 在vue中使用的是default 这个地方要注意
    value: Number,
  },


})

修改数据使用的是this.triggerEvent('父组件绑定的事件名',传过去的值) 这一点在vue中使用的是this.emit() 用法是一模一样的

js 复制代码
// 子组件事件传值
decrement() {
      this.triggerEvent("update-count", this.properties.count - 1)
    },
wxml 复制代码
<navigation-bar bind:update-count="updatecount" count="{{count}}" back custom-class="custom-class" />
// 父组件接受
js 复制代码
 updatecount(e) {
    console.log(e.detail);
    this.setData({
      count: e.detail
    })
  },
  // 进行修改
相关推荐
漫游的渔夫16 小时前
前端开发者做多步 Agent:别让 AI 边想边乱跑,用 Plan-Act-Observe 稳住 4 步任务
前端·人工智能·typescript
一锤捌拾16 小时前
V8引擎精品漫游指南--Ignition篇(下 一) 动态执行前的事情
前端·javascript
遇见~未来16 小时前
第六篇_CSS进阶_深入浏览器与工程化
前端·css·rust
Cache技术分享17 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
前端·后端
Daybreak17 小时前
Vercel Serverless 调国内 AI 接口 504?Edge Runtime 救了我
前端
zubylon17 小时前
Ollama 本地起一个开发助手
前端·人工智能
遇见~未来17 小时前
第五篇_构建真实页面_组件_响应式_维护性
前端·css3
魔士于安17 小时前
Unity完整小球迷宫项目
前端·unity·游戏引擎·贴图·模型
irpywp17 小时前
苦于AI生成的网页千篇一律且粗糙?design-md-chrome :一款网页样式提取插件 ,将任意网站的视觉规范转化为大模型可读的代码指令!
前端·人工智能·chrome·开源·github
xingpanvip17 小时前
星盘接口开发文档:日运语料接口指南
android·开发语言·前端·css·php·lua