【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、效果图

相关推荐
鬼手点金7 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
软件技术NINI7 小时前
美妆商城html+Css+js 4页
javascript·css·html
蛋蛋的就会顺顺的7 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday7 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室8 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
码艺-Alimjan8 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床8 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
子非鱼a10 小时前
【文件上传】一个普普通通的edu16
前端
美狐美颜SDK开放平台10 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
pride.li11 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉