效果图

分析数据

本项目购买的是聚合数据菜谱大全接口,首次购买赠送1000次。

首先观察一下接口返回的数据。

整个对象中包含 resultCode、reason 和 result 数组。result 数组中返回若干对象,每个对象中包含 parentId、name 和 list 数组,list 对象数组中,每个对象包含 id、 name 和 parentId。

返回的数据中包含了很多分类,本项目只选择其中 5 个,parentId 为 10001,10003,10005,10009 和 10012。

处理数据

为方便组件的渲染,在分类页面对返回的数据进行处理再传给组件。

域名设置

使用 wx.request 发起请求,在发请求之前,需要对域名进行设置,这样小程序才能和指定域名进行网络通信。文档详情

模块化

一方面,将配置都写在统一的文件中,这样日后如果修改配置相关的项只需要到这一个文件中去改。

另一方面,我们不希望别人知道我们的 appKey,如果 appKey 对外公开,也就意味着其他人能够盗用我们的请求次数。在根目录下创建 config.js,在该文件下定义 appKey,在其他文件中引用这个常量。在 git 提交的时候选择忽略这个文件。模块化文档详情

在 config.js 下编写如下代码。

const appKey = 'xxxxxxxxxxxxxxxxxx';module.exports= appKey;

在 classify 文件夹下的 index.js 中添加如下语句。注意:require 中只能写相对路径。

var appKey = require('../../config.js');

发起请求

将我们要访问的地址定义在常量 classifyURL 中,在 onLoad 中调用 handleResult 发起请求。这里没有将发起请求直接写在 onLoad 中,因为 onLoad 中可能还要处理其他事情。

在 handleResult 中使用 wx.request 发请求,success 中的 this 指向已经改变,不是当前页面的 this,要在发请求之前保存一下 this,let self = this;

由于这里只需要 parentId 为 10001,10003,10005,10009 和 10012 的标签,它们在 result 数组中对应的数组下标是 0, 2, 4, 8, 11,将以上数据存到 tagList 中。

const classifyURL = 'https://apis.juhe.cn/cook/category?key=';data: {tagList: [],
},onLoad: function(options) {this.handleResult();
},handleResult(){let self = this; // 注意!wx.request({url: classifyURL + appKey,data: {result: []},success: function (res) {const tempList = []const ids = [0, 2, 4, 8, 11];ids.map(i => tempList.push(res.data.result[i]));self.setData({tagList: tempList})console.log(self.data.tagList)}});},

组件结构

组件的结构设计要从数据入手。tagList 中的 name 作为一大类的 title ,这里的 title 分别是菜式菜品、时令食材、场景、西点和人群。在每一个大类中有若干小类,菜式菜品的下属类别有:家常菜、快手菜、创意菜、素菜、凉菜、烘焙、面食、汤和自制调味料。

那么将容器划分为两部分,类别和类别下的若干分类。

<view wx:for="{{List}}" wx:key="index" class="container"><view class='title-wrapper'><text class='title'>{{item.name}}</text></view><view class='tag-wrapper'><view wx:for="{{item.list}}" wx:key="index" class='tag-item-wrapper'><text class='tag-item'>{{item.name}}</text></view></view>
</view>

这里的 List 由页面传来,也就是 tagList。

Component({properties: {List: {type: Array,value: [],},},
});

注意

<view wx:for="{{List}}" wx:key="index" class="container"><view class='title-wrapper'><text class='title'>{{item.name}}</text></view>

此处的 item 指的是 {parentId: "10001", name: "菜式菜品", list: Array(9)}

<view wx:for="{{item.list}}" wx:key="index" class='tag-item-wrapper'><text class='tag-item'>{{item.name}}</text>
</view>

此处的 item 指的是 {id: "1", name: "家常菜", parentId: "10001"}

组件样式

对于样式的设定,要注意子代关系。container 的只系子代是 title-wrapper 和 tag-wrapper,一共有 5 个 title-wrapper 、tag-wrapper,每组标签有自己的颜色。

.container {width: 750rpx;
}.container:nth-child(1) {color: #a5d6a7;
}.container:nth-child(2) {color: #ff5252;
}.container:nth-child(3) {color: #64b5f6;
}.container:nth-child(4) {color: #ffb74d;
}.container:nth-child(5) {color: #9575cd;
}.container .title-wrapper {text-align: center;margin: 40rpx;
}.container .title {color: #000;font-size: 38rpx;
}.container .tag-wrapper {margin: 30rpx 80rpx;
}.container .tag-item-wrapper {display: inline-block;margin: 20rpx 0 20rpx 18rpx;
}.container .tag-item {padding: 10rpx 25rpx;font-size: 32rpx;
}.container:nth-child(1)>.tag-wrapper>.tag-item-wrapper>.tag-item {border: 1rpx solid #a5d6a7;border-radius: 40rpx;
}.container:nth-child(2)>.tag-wrapper>.tag-item-wrapper>.tag-item {border: 1rpx solid #ff5252;border-radius: 40rpx;
}.container:nth-child(3)>.tag-wrapper>.tag-item-wrapper>.tag-item {border: 1rpx solid #64b5f6;border-radius: 40rpx;
}.container:nth-child(4)>.tag-wrapper>.tag-item-wrapper>.tag-item {border: 1rpx solid #ffb74d;border-radius: 40rpx;
}.container:nth-child(5)>.tag-wrapper>.tag-item-wrapper>.tag-item {border: 1rpx solid #9575cd;border-radius: 40rpx;
}

页面 json

{"usingComponents": {"ck-tags": "/components/tags/index"}
}

页面 wxml

<ck-tags List="{{tagList}}"></ck-tags>

结束语

至此,tag 组件已完成初步开发。

从0开发豆果美食小程序——tag组件相关推荐

  1. 微信小程序开发(十一)小程序地图组件map

    地图组件顾名思义就是显示我们的地图的,通过经纬度,将位置在地图上显示出来:这里提几个常用属性,更多的可以到官网进行查阅. 属性 longitude:number类型,经度坐标 latitude:num ...

  2. 已知两点坐标如何快速增加其他坐标_从0开发工程测绘大师小程序之坐标正算篇(十一)...

    上一篇我们讲了如何进行实现角度与弧度的互相转化.在该篇中我们会讲解如何进行实现坐标正算的程序. 目录      1.什么是坐标正算 2.代码实现 3.界面展示 侃侃而谈 从该篇开始程序就会慢慢的越往后 ...

  3. 5个受欢迎的微信小程序UI组件库

    开发微信小程序的过程中,选择一款好用的组件库,可以达到事半功倍的效果.自从微信小程序面世以来,不断有一些开源组件库出来,下面5款就是排名比较靠前,用户使用量与关注度比较高的小程序UI组件库.还没用到它 ...

  4. 5个微信小程序UI组件库

    小程序UI组件库 WeUI WXSS iView WeApp Vant Weapp (原ZanUI WeApp) MinUi Wux WeApp 此文仅为便于自己查找 原文链接:https://www ...

  5. 6个最优秀的微信小程序UI组件库

    开发微信小程序的过程中,选择一款好用的组件库,可以达到事半功倍的效果.自从微信小程序面世以来,不断有一些开源组件库出来,下面6款就是排名比较靠前,用户使用量与关注度比较高的小程序UI组件库.还没用到它 ...

  6. 【附源码】计算机毕业设计Python安卓基于安卓的豆果美食APPou9ez(源码+程序+LW+调试部署)

    [附源码]计算机毕业设计Python安卓基于安卓的豆果美食APPou9ez(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pytho ...

  7. douchat 4.0 新版发布,助力小程序后台开发

    douchat是什么 douchat(中文名:豆信)是一款专为微信开发而创造的php开源框架,具有简洁.高效.优雅等特点. 新版本功能 douchat V4.0.0版本主要新增了小程序开发支持,具体包 ...

  8. 只需20小时,让0基础的你掌握小程序云开发!这个暑假,约否?

    今天的故事要从小开和小发这对好基友的假期说起...... 没错!他来了,他来了,云开发带着小程序开发夏令营最新情报向我们走来了! 为了让更多的童鞋享受高效率."在云上"掌握小程序开 ...

  9. vue+uni-app商城实战 | 第一篇:从0到1快捷开发一个商城微信小程序,无缝接入OAuth2实现一键授权登录

    一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...

  10. php微擎万能门店小程序_万能门店独立版小程序V2.0.2,基于ThinkPHP5框架开发的万能门店小程序源码...

    源码介绍 基于ThinkPHP5框架开发的万能门店小程序源码,是微擎上很火的万能门店小程序的独立版,万能门店小程序DIY建站无限独立版非微擎应用,独立版是基于国内很火的ThinkPHP5.0.10框架 ...

最新文章

  1. JQuery.JCShare 0.2 发布(加入弹窗功能)
  2. LiveVideoStack线上分享第四季(三):在线教育的音视频架构设计及弱网对抗技术...
  3. 如何手动实现C语言中的字符串操作
  4. 长城守卫 Beijing guards CERC 2004 LA3177 解题总结
  5. [转]学会使用DB2指令
  6. python爬取网页停止_Python爬虫之爬取静态网页
  7. [WebAPI] - 使用 Ajax 提交 HTML Form Data 到 WebAPI 的方法
  8. 关于Linux中的SIGABRT信号
  9. 乐玩插件和大漠插件哪个好_哪个PS后期插件功能最多最强?风光人像全能修图王!一个顶五个...
  10. Java 秒换算成,天,小时,分钟,秒
  11. 谈谈你对web语义化的理解
  12. 一文聊透Netty核心引擎Reactor的运转架构
  13. 织梦DEDE搬家数据还原后,前台错位
  14. 使用MetaMask客户端获取以太坊测试网络ropsten测试币
  15. coursera python_Python爬取Coursera课程资源的详细过程
  16. 嵌入式系统开发的基础知识
  17. 计算机组成原理7-主存储器—存储器与CPU的连接
  18. AI相机,请把我拍成“Angelababy ”!
  19. 数据库原理与应用实验指导书 实验四:数据查询
  20. 数字孪生技术仿真出北斗卫星发射!物联网进军航天智慧新里程

热门文章

  1. 使用WampServer搭建自己的网站
  2. P8842 [传智杯 #4 初赛] 小卡与质数2 垃圾筛
  3. 周期性的方波 matlab,[转载]matlab产生方波脉冲和周期性方波信号
  4. matlab程序框图,求大神告知程序框图
  5. 教你如何写初/高级前端简历【全新web前端入门视频教程】
  6. leetcode1776. 车队 II
  7. 既然选择了编程,只管风雨兼程
  8. 5种尊重您隐私的替代搜索引擎
  9. 三国演义人物关系思维导图模板分享
  10. mpc安装教程linux,linux mpc 安装