小程序父组件向子组件传值(渲染子组件)

本文介绍了在微信小程序中通过属性传递数据的方法,包括在父组件中使用`key={{value}

1.在子组件标签中使用 key="{{ value }}" 的形式进行传递。

<video-detail propos="{{item}}" bindtap="clickVideoItem" 

  data-item="{{item}}"></video-detail>

2. 在子组件js文件中,使用properties:{}对象接收传递过来的数据

 properties: {
    propos: {
      type: Object,
      default: {},
    },
  },

3.渲染的实际效果

​
 <image class="image" src="{{propos.cover}}" mode="widthFix"></image>

​

### 微信小程序父组件在有时向子组件微信小程序开发过程中,为了优化性能和用户体验,有时需要确保只有当特定条件满足时才更新子组件的状态。对于父组件仅在有的情况下向子组件数据的需求,可以通过监听数据变化来实现这一功能。 #### 使用 `data` 属性绑定与观察者模式 父组件可以利用 `<template>` 或直接通过属性的方式将数据绑定到子组件上。此时,如果希望只在某些条件下发送这些数据,则可以在设置页面状态之前先判断目标变量是否有有效[^2]。 ```html <!-- Parent.wxml --> <view> <!-- 只有当 ratio 不为空时才会被递给 child 组件 --> <child-component wx:if="{{ratio}}" data-ratio="{{ratio}}"></child-component> </view> ``` 或者采用更灵活的做法——使用自定义事件配合 JavaScript 控制: ```javascript // Parent.js Page({ onLoad() { // 假设从服务器获取数据存储在此处 let serverData = null; // 模拟异步请求完成后的处理逻辑 setTimeout(() => { serverData = 0.75; // 来自后端的比例 if (serverData !== null && typeof serverData === 'number') { this.setData({ ratio: serverData }); // 如果已经渲染子组件则立即通知它更新视图 const query = wx.createSelectorQuery().in(this); query.select('#childComponent').fields({ node: true }).exec((res) => { res[0].node.updateRatio(serverData); }); } }, 1000); }, }); ``` 这里的关键在于 `setTimeout()` 函数模拟了一个网络延迟的过程,在实际应用中应替换为真实的 API 调用。一旦获得了有效的数(即不为空且为数字类型),就将其赋给页面实例的 `data` 对象,尝试找到对应的子组件节点以便即时刷新界面[^4]。 另外一种常见做法是在 WXML 中加入条件语句控制元素是否显示以及何时初始化子组件。这种方式不仅能够减少不必要的 DOM 更新次数,还能简化代码结构[^3]。 #### 子组件内部响应机制 为了让子组件能够在接收到新的参数之后做出相应调整,通常会在生命周期函数里添加必要的业务逻辑。比如每当 `properties` 发生改变时执行某个操作: ```javascript // ChildComponent.js Component({ properties: { ratio: Number, }, observers: { 'ratio': function(newVal, oldVal){ if (!isNaN(newVal)) { console.log(`新比例已接收:${newVal}`); // 执行绘制或其他依赖于该比率的操作... } } }, methods: { updateRatio(value) { this.setData({ ratio: value }); } } }) ``` 上述代码片段展示了如何创建一个简单的圆形进度条组件,设置了对其输入属性的变化作出反应的能力。每当来自父级的新 `ratio` 参数到达时都会触发一次重新计算过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值