【uniapp】新闻列表+跳转详情页+评论展示(uni.request请求接口)

uniapp uni.request请求接口

1、接口

接口地址

2、页面

pages/list/list.vue-列表页面

pages/details/details.vue-详情页面

API 功能
uni.navigateTo(OBJECT) 页面跳转
uni.request(OBJECT) 发起网络请求
c 复制代码
pages/list/list.vue
<template>
	<view>
		<view class="out">
			<view class="row" v-for="item in listArr" :key="item.id" @click="clickItem(item.id)">
				<view class="title">{{item.title}}</view>
				<view class="content">{{item.body}}</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				listArr:[]
			};
		},
		methods:{
			getData(){
				uni.request({
					url:"https://jsonplaceholder.typicode.com/posts",
					success:res=>{
						// console.log(res)
						this.listArr= res.data
					}
				})
			},
			clickItem(e){
				console.log(e)
				uni.navigateTo({
					url:"/pages/details/details?id="+e
					//地址拼接
				})
			}
		},
		onLoad() {
			this.getData()
			
			uni.setNavigationBarTitle({
				title:"新闻列表"
			})
			uni.setNavigationBarColor({
				backgroundColor:"#007aff",
				frontColor:"#ffffff"
			})			
		}
	}
</script>

<style lang="scss">
.out{
	padding: 50rpx 30rpx;
	.row{
		padding: 20rpx 0;
		border-bottom: 1rpx dotted #e4e4e4;
		.title{
			font-size: 36rpx;
			padding-bottom: 15rpx;
			color: #333;
		}
		.content{
			font-size: 28rpx;
		}
	}
}
</style>
c 复制代码
pages/details/details.vue
<template>
	<view>
		<view class="detail">
			<view class="title">{{objData.title}}</view>
			<view class="content">{{objData.body}}</view>
		</view>
		
		<view class="comments">
			<view class="text">Comments</view>
			
			<view class="row" v-for="item in comments" :key="item.id">
				<view class="top">
					<view class="name">{{item.name}}</view>
					<view class="mail">{{item.email}}</view>
				</view>
				<view class="body">{{item.body}}</view>
			</view>
			
		</view>
	
	</view>
</template>

<script>
	export default {
		data() {
			return {
				objData:{},
				id:1,
				comments:[]
			};
		},
		onLoad(e){
			this.id=e.id
			this.getDetail()
			this.getComments()
			// console.log(this.id)
		},
		methods:{
			getDetail(){
				uni.showLoading({
					title:"数据加载中",
					mask:true
				})
				uni.request({
					url:"https://jsonplaceholder.typicode.com/posts/" +  this.id,
					success:res=>{
						// console.log(res)
						this.objData=res.data
					},
					complete:()=>{
						uni.hideLoading()
						//请求完成隐藏弹窗
					}
				})
			},
			getComments(){
				uni.request({
					url:`https://jsonplaceholder.typicode.com/posts/${this.id}/comments`,
					//地址拼接,使用``,变量使用${}
					success:res=>{
						// console.log(res)
						this.comments=res.data
					}
				})
			}
		}
	}
</script>

<style lang="scss">
.detail{
	padding: 30rpx;
	.title{
		font-size: 46rpx;
		color: #000;
		padding-bottom: 20rpx;
	}
	.content{
		font-size: 30rpx;
		color: #666;
		padding-bottom: 60rpx;
	}
}
.comments{
	padding: 30rpx;
	background: #f8f8f8;
	.text{
		font-size: 46rpx;
		margin-bottom: 30rpx;
	}
	.row{
		border-bottom: 1px solid #e8e8e8;
		padding: 20rpx 0;
		.top{
			display: flex;
			justify-content: space-between;
			font-size: 22rpx;
			color: #999;
			padding-bottom: 15rpx;
		}
		.body{
			font-size: 28rpx;
			color: #555;
		}
	}
}
</style>

3、效果图

相关推荐
2301_1472583691 分钟前
7月1日作业
java·前端·算法
汪子熙2 分钟前
Angular 应用中手动调用 subscribe 方法的时机与实践探讨
前端
csdn_aspnet11 分钟前
在 React 中使用 WebSockets 构建实时聊天应用程序
javascript·react.js·node.js
【ql君】qlexcel34 分钟前
Notepad++ 复制宏、编辑宏的方法
开发语言·javascript·notepad++··宏编辑·宏复制
MiyueFE34 分钟前
14 个逻辑驱动的 UI 设计技巧,助您改善任何界面
前端·设计
啃火龙果的兔子38 分钟前
前端单元测试覆盖率工具有哪些,分别有什么优缺点
前端·单元测试
「、皓子~1 小时前
后台管理系统的诞生 - 利用AI 1天完成整个后台管理系统的微服务后端+前端
前端·人工智能·微服务·小程序·go·ai编程·ai写作
就改了1 小时前
Ajax——在OA系统提升性能的局部刷新
前端·javascript·ajax
凌冰_1 小时前
Ajax 入门
前端·javascript·ajax
京东零售技术1 小时前
京东小程序JS API仓颉改造实践
前端