uni-app轻松入门-2自定义组件-传值-跳转-请求

简介: 1.写着写着发现一篇文章太长了,那就分开2篇文章吧

1.前言


1.写着写着发现一篇文章太长了,那就分开2篇文章吧


2. 自定义组件


uni_moduls 里面

以常见的新闻为例

_6AOU8UZN5029XPA1E5X31M.png



3. 一步一步操作 组件内编写组件


模板就是 h1 标题 div 内容


<template>
    <view class="">
        <h1>{{title}}</h1>
        <div>{{content}}</div>
    </view>
</template>
<script>
export default{
        props:{
            title:{
                type:String,
                default:""
            },
            content:{
                type:String,
                default:""
            }
        },
        data(){
            return{
            }
        }
    }



4. 使用 引入 ,组件配置


pages/index/index.vue

引入


import  yzsNews from '@/uni_modules/yzs-news/components/yzs-news/yzs-news.vue'

使用


<yzs-news title="消防演练" content="生命第一"></yzs-news>



5. 组件内事件传递



<h1 @tap="tap1">{{title}}</h1>

方法


methods:{
        tap1(){
             console.log("调用了")
             this.$emit("changeTitle",this.title)
         }}

$emit  vue的用法


6. 父组件


使用


<yzs-news title="消防演练" content="生命第一"
        @changeTitle="change"
        ></yzs-news>

实现方法


methods: {
            change(e){
// e就是传的参数
                console.log("tap-父:",e)
            }
        },



7.请求



onLoad() {
            uni.showLoading({
                title:"加载中..."
            })
            uni.request({
                url: 'https://unidemo.dcloud.net.cn/api/news',
                method: 'GET',
                data: {},
                success: res => {
                    console.log("res:",res)
                    this.newsList = res.data
                },
                fail: () => {},
                complete: () => {
                    uni.hideLoading()
                }
            });
        },



8.模板结构


书接上文 安装过 这个uni-list插件

这里没有用云服务,所以用最简单的插件来讲解


<uni-list>
            <uni-list-item  v-for="(item, index) in newsList"
            :key="item.id"
             :title="item.title" 
             :note="item.summary" 
             :thumb="item.author_avatar"
             thumb-size="lg" 
             :rightText="item.author_name"           
             ></uni-list-item>
        </uni-list>



9. 跳转方式


跳转2种方式 一种是 标签


<navigator url=""></navigator>

一种是js 逻辑

按钮


<button type="default"  @tap="goToDetail" data-newsid="sss">跳转</button>

传参 通过data-xx

其实uni-app就是vue的语法 小程序的API

所以这种写法就很熟悉

跳转逻辑


goToDetail(e){
                console.log("e2",e.currentTarget)
                let {newsid} = e.currentTarget.dataset
                uni.navigateTo({
                    url: '../detail/detail?newsid='+newsid
                });
            }

当然详情页肯定需要自己新建的

直接在pages 右键 新建页面就行


10.具体到我这个项目


你发现标签不好使

用js跳转但是传值麻烦


<uni-list-item  v-for="(item, index) in newsList"
            :key="item.id"
             :title="item.title" 
             :note="item.summary" 
             :thumb="item.author_avatar"
             thumb-size="lg" 
             :rightText="item.author_name"
             clickable  
            link :to="'/pages/detail/detail?newsid='+item.post_id"
             ></uni-list-item>

1.这个第三方的组件需要设置clickable熟悉为true才可以触发点击事件

2.这个参数不能通过data-xx的形式传递

3.link会自带一些样式,也可以设置跳转方式


11.获取路由传参值


不管哪种方式,获取参数都一样

我这里detail.vue


onLoad(e) {
            console.log("详情页",e)
}


根据传过来的id发请求


uni.request({
                url: 'https://unidemo.dcloud.net.cn/api/news/36kr/'+e.newsid,
                method: 'GET',
                data: {},
                success: res => {
                    let {title,content} = res.data
                    console.log("详情res:",res)
                    this.title = title 
                    this.content = content 
                },
                fail: () => {},
                complete: () => {}
            });



12.rich-text


返回的报文有 标签结构 不能用 view来展示

rich-text组件  属性 nodes,值 为数组或者字符串


<template>
    <view>
        <view class="">
            {{title}}
        </view>
        <!-- 节点 -->
        <rich-text :nodes="content"></rich-text>
    </view>
</template>

这个2个接口平常也可以玩




相关文章
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
85 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
移动开发 小程序 测试技术
自定义多级联动选择器指南(uni-app)
在本文中,探讨了如何在uni-app中创建自定义多级联动选择器组件。这个组件具有强大的多端支持,可适用于H5、APP、微信小程序、支付宝小程序等多种平台。
68 1
自定义多级联动选择器指南(uni-app)
|
2月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
121 9
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
226 1
|
2月前
|
存储 API 数据库
uniapp APP自动更新组件
uniapp APP自动更新组件
80 1
|
2月前
|
小程序 JavaScript 前端开发
uni app 入门
uni app 入门
43 2
|
2月前
|
存储 前端开发 UED
uni-app:基础组件 (下)
本文介绍了多种前端组件及其用法,包括:label 组件用于表单元素的标签;picker 组件用于实现日期、时间及普通列表的选择器;textarea 组件用于输入多行文本,并可通过 v-model 双向绑定数据;process 组件用于显示进度条;swiper 组件用于轮播图展示;match-media 组件根据屏幕尺寸展示内容;audio 组件用于播放音频;switch 组件用于开关选择;scroll-view 组件实现滚动视图功能;以及 storage 的使用方法,如设置、获取和移除本地存储等。
|
2月前
|
存储 前端开发 JavaScript
uni-app:基础组件 (上)
本文介绍了uni-app中多个组件的使用方法,包括存储操作、图标展示、按钮样式、表单输入、导航跳转和输入框控制等。通过具体代码示例展示了如何设置存储键值、使用不同类型的按钮、实现表单提交与重置功能、控制输入框的显示与清除等功能。
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
633 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
726 1