美文网首页
uni-app轻松入门-2自定义组件-传值-跳转-请求

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

作者: 云高风轻 | 来源:发表于2021-09-22 23:36 被阅读0次

1.前言

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


2. 自定义组件

uni_moduls 里面
以常见的新闻为例

1.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个接口平常也可以玩


参考资料

uni-app轻松入门-1
uni-app官网


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉

相关文章

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

    1.前言 1.写着写着发现一篇文章太长了,那就分开2篇文章吧 2. 自定义组件 uni_moduls 里面以常见的...

  • 07-组件之间的传值:父组件给子组件传值

    组件之间的传值分为三种传值方式 1.父组件传值给子组件:使用属性传 props['自定义属性名']2.子组件传...

  • vue2.0组件间传值的方法汇总

    1、组件间的传值 1.1 父组件向子组件传值 子组件自定义一个属性 父组件通过自定义属性绑定值 子组件调用自定义属...

  • Vue中 子组件与父组件之间的传值

    一、子组件向父组件传值 1、子向父传值 需要用到自定义事件 $emit。 2、this.$emit('自定义的事件...

  • 2018-09-28

    1.vue 路由跳转传值 -------- 最好用vuex,bus不适合在路由跳转中传值,因为需要初始化组件 2....

  • ionic4-传递参数

    环境 路由传值 方式一(单个值) 路由定义 跳转 或者 接收 方式二(多个值) 跳转 接收 组件间传值 父 -> ...

  • 03、vue 页面跳转传值,父子组件传值

    1、页面跳转传参 2、父子组件传值父组件 子组件(子组件调用父组件的方法) 3、父组件调用子组件的方法 4、修改浏...

  • 组件基础

    组件的入门 组件的私有化 组件的切换 组件间的传值-向组件内传值 组件间传值-向组件外传值 ref获取元素

  • Vue_组件间传值

    1、父组件传值给子组件2、子组件传值给父组件 1、父组件传值给子组件 2、子组件传值给父组件

  • 组件间传值

    父子组件传值父传子 // 接收父组件传值 子传父 // 触发一个自定义事件 祖孙组件传值// 添加依赖数据,它里面...

网友评论

      本文标题:uni-app轻松入门-2自定义组件-传值-跳转-请求

      本文链接:https://www.haomeiwen.com/subject/qfhngltx.html