赛派号

vivox系列多久出一次新机 uni

最近一直在捣鼓uniapp技术开发,前段时间就有使用uniapp实现了自定义导航栏及模态弹窗组件,想着后续开发个仿微信聊天项目,今天就给大家分享基于uniapp开发的聊天室。

uniapp自定义导航栏Nbar组件 uniapp自定义模态框|仿ios弹框组件 效果图

H5端 / 小程序 / App端测试效果如下 (后续大图统一展示App端)

技术框架 编辑器:HBuilder X 技术框架:uni-app + vue 状态管理:Vuex iconfont图标:阿里字体图标库 自定义导航栏 + 底部Tabbar 弹窗组件:uniPop(基于uni-app封装模态弹窗) 测试环境:H5端 + 小程序 + App端(三端均兼容)

引入公共组件及样式 import Vue from 'vue' import App from './App' // >>>引入css import './assets/fonts/iconfont.css' import './assets/css/reset.css' import './assets/css/layout.css' // >>>引入状态管理 import store from './store' Vue.prototype.$store = store // >>>引入公共组件 import headerBar from './components/header/header.vue' import tabBar from './components/tabbar/tabbar.vue' import popupWindow from './components/popupWindow.vue' Vue.component('header-bar', headerBar) Vue.component('tab-bar', tabBar) Vue.component('popup-window', popupWindow) // >>>引入uniPop弹窗组件 import uniPop from './components/uniPop/uniPop.vue' Vue.component('uni-pop', uniPop) Vue.config.productionTip = false App.mpType = 'app' const app = new Vue({ ...App }) app.$mount() UniApp仿微信朋友圈

实现类似微信朋友圈页面滚动一定距离顶部导航栏由透明变背景色,通过onPageScroll函数实现自定义导航上下滑动自动调整导航栏的透明度

 

/** * @tpl 朋友圈模板 */ ... export default { data() { return { headerBarBackground: 'transparent' } }, onPageScroll : function(e) { // console.log("滚动距离为:" + e.scrollTop); this.headerBarBackground = 'rgba(65,168,99,'+e.scrollTop / 200+')' }, methods: { ... } } UniApp滚动聊天页面底部

在uni-app将聊天信息滚动到底部有些不好实现,可以借助scroll-view组件scroll-into-view属性,不过只能设置一次,不能动态设置,只能通过动态改变scroll-top来实现。

xxx xxx xxx ... /** * @Desc Vue聊天功能实现 * @About Q:282310962 wx:xy190310 */ export default { data() { return { scrollTop: 0, ... } }, mounted() { this.scrollToBottom() }, updated() { this.scrollToBottom() }, methods: { // 滚动至聊天底部 scrollToBottom(t) { let that = this let query = uni.createSelectorQuery() query.select('#scrollview').boundingClientRect() query.select('#msglistview').boundingClientRect() query.exec((res) => { // console.log(res) if(res[1].height > res[0].height){ that.scrollTop = res[1].height - res[0].height } }) }, ... } }

这样每次发送消息,都会触发updated函数,调用scrollToBottom方法,自动将聊天信息置于聊天页面底部展示了。

UniApp+vuex判断是否登录 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { user: uni.getStorageSync('user'), token: uni.getStorageSync('token'), }, mutations: { // 存储token SET_TOKEN(state, data) { state.token = data uni.setStorageSync('token', data) }, // 存储用户名 SET_USER(state, data) { state.user = data uni.setStorageSync('user', data) }, ... }, }) import { mapState, mapMutations } from 'vuex' import util from '../../utils/util.js' export default { data() { return { formObj: {}, } }, computed: { ...mapState(['user', 'token']) }, mounted() { // 判断是否有登录 if(this.user){ uni.redirectTo({url: '/pages/index/index'}) } }, methods: { // 提交表单 handleSubmit(e) { ... } } }

以上就是基于uniapp开发聊天室的介绍,后续也会继续为大家分享实战项目~~ 😏😏

◆ vue仿微信网页版聊天|vue+vuex网页端聊天模板

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lsinopec@gmail.com举报,一经查实,本站将立刻删除。

上一篇 没有了

下一篇没有了