uni-app 左右两侧布局:左侧选项卡,右侧展示内容,并分别实现上拉加载功能
uni-app 左右两侧布局:左侧选项卡,右侧展示内容,并分别实现上拉加载功能
类似于https://so.m.jd.com/webportal/channel/m_category?searchFrom=pro这种效果
信息类别 | 信息内容 |
---|---|
开发环境 | 未提及 |
版本号 | 未提及 |
项目创建方式 | 未提及 |
1 回复
在 uni-app
中实现左右两侧布局,其中左侧为选项卡,右侧展示内容,并分别实现上拉加载功能,可以使用 Vue.js 的组件化开发特性,结合 uni-app
提供的 API 和组件来实现。以下是一个简单的代码示例,展示如何实现这一功能。
首先,创建项目结构:
├── pages
│ ├── index
│ │ ├── index.vue
│ └── ...
├── components
│ ├── TabBar.vue
│ └── Content.vue
├── App.vue
└── main.js
TabBar.vue(左侧选项卡组件)
<template>
<view class="tab-bar">
<view v-for="(tab, index) in tabs" :key="index" @click="selectTab(index)">
{{ tab.name }}
</view>
</view>
</template>
<script>
export default {
data() {
return {
tabs: [
{ name: 'Tab 1' },
{ name: 'Tab 2' },
// 更多选项卡
],
selectedTab: 0
};
},
methods: {
selectTab(index) {
this.selectedTab = index;
this.$emit('tab-change', index);
}
}
};
</script>
<style scoped>
.tab-bar {
/* 样式 */
}
</style>
Content.vue(右侧内容组件,支持上拉加载)
<template>
<scroll-view scroll-y="true" @scrolltolower="loadMore">
<view v-for="(item, index) in items" :key="index">
{{ item }}
</view>
<view v-if="loading">加载中...</view>
</scroll-view>
</template>
<script>
export default {
props: ['initialItems'],
data() {
return {
items: this.initialItems,
loading: false,
page: 1
};
},
methods: {
loadMore() {
if (this.loading) return;
this.loading = true;
// 模拟异步请求
setTimeout(() => {
const newItems = Array.from({ length: 10 }, (_, i) => `Item ${this.items.length + i + 1}`);
this.items = [...this.items, ...newItems];
this.loading = false;
this.page += 1;
}, 1000);
}
}
};
</script>
index.vue(主页面,组合 TabBar 和 Content)
<template>
<view class="container">
<TabBar @tab-change="handleTabChange" />
<Content :initialItems="currentItems" />
</view>
</template>
<script>
import TabBar from '@/components/TabBar.vue';
import Content from '@/components/Content.vue';
export default {
components: { TabBar, Content },
data() {
return {
tabsData: [
{ items: Array.from({ length: 10 }, (_, i) => `Tab 1 Item ${i + 1}`) },
{ items: Array.from({ length: 10 }, (_, i) => `Tab 2 Item ${i + 1}`) }
],
currentTabIndex: 0
};
},
computed: {
currentItems() {
return this.tabsData[this.currentTabIndex].items;
}
},
methods: {
handleTabChange(index) {
this.currentTabIndex = index;
}
}
};
</script>
以上代码展示了如何构建左右两侧布局,并实现选项卡切换和上拉加载功能。你可以根据实际需求进一步调整和优化代码。