news 2026/10/14 18:10:14

微信小程序条件渲染与picker 组件:从界面交互到数据 驱动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序条件渲染与picker 组件:从界面交互到数据 驱动

一、需求分析

本次作业实现一个小程序案例,综合练习 picker 选择器组件、wx:if 条件渲染、block 块渲染以及 input 输入框的失焦事件。

功能要点:页面上方是一个 picker 选择器,默认显示红色文字与红色色块;下方是数字输入框;输入框下方展示红、绿、蓝三条色块。点击 picker 会从底部弹出颜色选项,选定后点击确定,上方文字与色块同步变为所选颜色。输入框使用 type=digit,真机上会唤起带小数点的数字键盘;输入数字并让输入框失去焦点后,若数值小于等于 0,下方三条色块隐藏,若大于 0 则显示。

二、整体思路

整个案例可拆解为两条交互线:

  • picker 链路:change 事件返回选中项下标,写入 data 中的 color,驱动上方文字的条件渲染和色块的背景色。
  • 输入框链路:blur 失焦事件读取输入值并转成数字,写入 digitValue,再由 wxml 中的 block 条件判断控制三条色块的显隐。

三、页面结构(index.wxml)

由两个 box 区域组成:第一个区域用 picker 选色并渲染文字与色块,第二个区域用 block 条件渲染三条色块。

<!--index.wxml-->

<navigation-bar title="条件渲染和picker组件" back="{{false}}" color="black" background="#FFF"></navigation-bar>

<scroll-view class="scrollarea" scroll-y type="list">

<view class="box">

<view class="title">条件渲染和picker组件</view>

<picker mode="selector" range="{{colors}}" bind:change="colorPick">

请点击此处的picker组件

</picker>

<view wx:if="{{color == 0}}">红色</view>

<view wx:elif="{{color == 1}}">绿色</view>

<view wx:elif="{{color == 2}}">蓝色</view>

<view wx:else>紫色</view>

<view class="view-item" style="background-color: {{colors[color]}};"></view>

</view>

<view class="box">

<view class="title">block中的条件渲染</view>

<input type="digit" placeholder="请输入一个数字" bind:blur="colorSet" />

<block wx:if="{{digitValue > 0}}">

<view class="view-item bc-red"></view>

<view class="view-item bc-green"></view>

<view class="view-item bc-blue"></view>

</block>

</view>

</scroll-view>

四、核心交互逻辑(index.js)

// index.js

Page({

data: {

color: 0,

digitValue: 1,

colors: ['red', 'green', 'blue', 'purple']

},

colorPick(e) {

console.log(e);

this.setData({

color: e.detail.value

})

console.log(this.data.color);

},

colorSet(e) {

console.log(e);

let num = Number(e.detail.value)

if (!isNaN(num)) {

this.setData({

digitValue: num

})

}

console.log(this.data.digitValue);

}

})

五、四个关键知识点

  1. picker 普通选择器:mode="selector",range动态绑定选项数组,change 事件返回的是选中项下标而非文本,所以用e.detail.value取出下标更新 color。
  2. wx:if 条件渲染:wx:if / wx:elif / wx:else构成分支判断,按 color 下标显示颜色名;条件为假时不创建节点(惰性渲染)。
  3. block 块渲染:只做逻辑包裹,不会生成额外节点,适合批量控制一组组件显隐;换成 view 会多渲染一层标签。
  4. blur 失焦事件 + digit 键盘:bind:blur在输入框失去焦点时才触发;type="digit"在真机弹出带小数点的数字键盘。

六、样式实现(index.wxss)

/**index.wxss**/

page {

height: 100vh;

display: flex;

flex-direction: column;

}

.scrollarea {

flex: 1;

overflow-y: hidden;

}

picker {

color: tomato;

margin: 40rpx;

background-color: lightgray;

font-size: 40rpx;

padding: 20rpx;

}

.view-item {

width: 90%;

height: 100rpx;

margin: auto;

}

.bc-red {

background-color: red;

}

.bc-green {

background-color: green;

}

.bc-blue {

background-color: blue;

}

.bc-purple {

background-color: purple;

}

七、踩坑提示:navigation-bar 扩展组件

wxml 顶部使用了 navigation-bar 自定义导航组件,需要在 index.json 用 usingComponents 声明并安装 npm 包,否则报「组件路径不存在」。若安装或编译困难,可删掉 navigation-bar、清空 index.json、在 app.json 删掉 navigationStyle: custom,改用原生导航栏,功能不受影响。

八、作业扩展:增加紫色

  1. index.js 的 colors 数组新增purple,picker 列表出现第四个选项。
  2. index.wxml 条件分支改为红、绿、蓝用 wx:elif,最后一支用 wx:else 显示紫色。
  3. index.wxss 新增.bc-purple样式类。

九、小结

本案例用选色 + 数字判断的界面,串起 picker 组件、wx:if 条件渲染、block 块渲染与 input 失焦事件四条知识点。理解「change 返回下标」「blur 失焦触发」「block 不生成节点」三个关键点,就能灵活迁移到问卷选择、表单校验、动态显隐等更多场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 18:09:37

ESP32-S3+LVGL驱动1.69寸电容触摸屏:初始化、DMA与坐标映射全解

简介&#xff1a;面向嵌入式开发者的ESP32-S3图形界面驱动资源包&#xff0c;聚焦LVGL在1.69寸电容触摸屏上的落地&#xff1a;屏显部分采用ST7789显示控制器&#xff0c;触摸部分由CST816芯片实现&#xff0c;适合希望快速搭建物联网UI、学习LVGL移植或做屏幕驱动二次开发的工…

作者头像 李华
网站建设 2026/10/14 18:09:36

SQL聚合函数与GROUP BY分组查询详解:从COUNT到HAVING的完整实践

1. 聚合函数&#xff1a;SQL 里的"一键统计"到底是怎么算的先别急着上手写 GROUP BY&#xff0c;聚合函数是这一整套逻辑的基石。所谓聚合&#xff0c;就是把多行数据按照某种规则压缩成一行结果&#xff0c;最常见的五个函数是 COUNT、SUM、AVG、MAX、MIN。它们的输…

作者头像 李华
网站建设 2026/10/14 18:09:25

手写HTML5简历:语义化、响应式与打印友好的技术实践

1. 项目概述&#xff1a;为什么一份“手写”的HTML5简历&#xff0c;比PDF和Word更值得花时间折腾最近帮几位刚毕业的朋友改简历&#xff0c;发现一个特别有意思的现象&#xff1a;他们投递的岗位明明写着“前端开发”“UI设计”“数字营销”&#xff0c;可附件却清一色是Word或…

作者头像 李华
网站建设 2026/10/14 18:09:03

vSphere 7 上部署 Tanzu Kubernetes 集群:从 Supervisor 到 TKC 的完整实践

1. 为什么要在 vSphere 7 上跑 Tanzu Kubernetes 集群很多做企业级虚拟化的朋友&#xff0c;第一次听到“在 vSphere 上跑 Kubernetes”时&#xff0c;脑子里冒出来的第一个问题往往是&#xff1a;我直接开几台虚拟机装 kubeadm 不就行了吗&#xff0c;为什么还要折腾 Tanzu&am…

作者头像 李华