梅科尔工作室-HarmonyOS应用开发第二次培训(自定义组件实现底部导航栏)

目录

1.准备相关文件及图片等

1.1.准备文件

1.2.在config.json中配置页面

1.3.下载导航栏图标

2.创建小组件

2.1.在datas中创建小组件相关信息

2.2.组件外观设计

3.底部导航栏相关逻辑实现

3.1.父组件向子组件传参

3.1.1.为每一个页面下方导航栏添加参数index

3.1.2.子组件接收父组件的参数

3.1.3.实现选中切换图标

​3.2.实现点击跳转


1.准备相关文件及图片等

1.1.准备文件

(1)在common下创建用来创建小组件的文件夹components并在下方创建tabbar组件页面

7460d9dec5254612865a6d5462cf8d72.png

(2)在common下创建datas文件并创建tabbarItem.js文件用来存储导航栏组件相关信息(图标路径,value值,选中后图标路径)

0ea322930da849e48bafa2e2ed322b16.png

(3)在common.pages下创建相关页面

ba417f3f37a145c8822b96b450cbb076.png 

1.2.在config.json中配置页面

28b2f2c3830f4193a2a74f3e184d5f49.png 

1.3.下载导航栏图标

iconfont-阿里巴巴矢量图标库

2.创建小组件

2.1.在datas中创建小组件相关信息(simg是选中后图标路径)

3f23655842454eb8bfec39106969ee63.png

 2.2.组件外观设计

a81b0357acfb4236af8711ce56d1754d.png

 2988663b2c9244008a2b35ee09b90bd0.png

 1a68c3a5a0544cf4a15c8b6a4daa3236.png

3.底部导航栏相关逻辑实现

3.1.父组件向子组件传参

实现点击哪个页面,哪个页面下方导航栏对应图标变为选中图标 

 3.1.1.为每一个页面下方导航栏添加参数index

1a694f3c77344d84b94ab90dc1cbd7c4.png

3.1.2.子组件接收父组件的参数

001a3a3c05c74fb9925e65d04c545f7f.png 

3.1.3.实现选中切换图标

如果页面id与导航栏对应id一样,选择选中对应图标,类似于c语言问号表达式。

idx图标id从0,开始。

index传入的页面的导航栏对应id,可以自己设置,如果第一个页面index设置了“1”,下图应该为

$idx == index - 1

cf8d46c1c0984f6ba3c95a8cba79136b.png3.2.实现点击跳转(路由)

导入router函数

2dd7cbb6e3da4f5c8bf06c3a6d76e3c5.png 

在跳转函数中写入相应不同图标选择的页面

jump(index){        switch(index){            case 0:                router.push({                    uri:"pages/index/index",                    params:{                        info:"首页"                    }                });break;            case 1:                router.push({                    uri:"pages/people/index",                    params:{                        info:"联系人"                    }                });break;            case 2:                router.push({                    uri:"pages/find/index",                    params:{                        info:"发现"                    }                });break;            case 3:                router.push({                    uri:"pages/me/index",                    params:{                        info:"我的"                    }                });break;        }    }

 其中params中info值可以在相应页面直接使用

猜你喜欢

转载自blog.csdn.net/qq_59744114/article/details/125302202
今日推荐