Day12微信小程序实战交友小程序优化“附近的人”页面与serach组件的布局和样式以及搜索历史记录和本地缓存*内附代码)SCAUgogocj

回顾/:我们已经实现了显示附近的人的功能了,可以多个人看到附近的人页面了

但是还是要进行优化有几个问题:1、我们用户选择了其他的自定义头像之后,在首页可以看到头像的变化,但是在附近的人中头像会变成报错的样式:如:

也就是500了,也就是找不到这个图片了,解决方法:看开发文档-》云开发

其中有一个“换取临时链接”的功能(通过这个方法可以临时的拿到一个图片的路径了),然后这个路径就可以对应到我们的iconpath中了,有直接看demo

wx.cloud.getTempFileURL({fileList:['cloud://xxx.png'],success:res=>{//fileList是一个有如下结构的对象数组//[{//fileID:'cloud://xxx.png',//文件ID//tempFileURL:'',//临时文件网络链接//maxAge:120*60*1000,//有效期//}]console.log(res.fileList)},fail:console.error})我们刚刚换了头像的测试号,可以看到在数据库中

所以我们就可以直接在near.js里面用for来判断每个字段符不符合条件即可了,一旦找到了这个cloud开头的路径的话,也就是if里面进行的东西

我们就要换取临时的路径即可了,如果else的话,我们还是和之前一样的,直接push进去即可了

if里面的话直接copy文档里面的demo即可了

我们通过

里面的那个tempFileURL就是一个临时的路径了

如何在全部for结束之后也再次的进行setdata操作即可了,完整代码就是

得到的效果就是,可以看到另外一个用户刚刚它换的头像了

(后面的优化就是可以点击这个用户的头像之后我们就可以跳转到它的详情页面了

这个功能在实现起来其实页不复杂的,有一个和markers对应的事件,也就是点击了这个markers就会触发这个事件了

通过这个事件其实我们是可以拿到id值得

markertap(ev){console.log(ev);}通过在near.js里面得这个函数,然后我们点击一下地图里面的marker图片之后,我们得到的值就是:

这个markerID其实对应的就是用户的id值了

markertap(ev){//console.log(ev);wx.navigateTo({url:'/pages/detail/detailuserId='+ev.markerId})}通过这个代码其实就可以实现,点击地图里面的图标的话我们就可以跳转到这个用户的详情页面去了

3、后面要测试的就是假如测试账号关闭了共享位置的话

通过测试我们发现,测试号关闭了共享位置的话,在地图里面即使是刷新了还是会看到这个用户的头像的

(其实代码是没有错的,把项目关了再重启之后会看到这个关闭了共享位置的用户头像就消失了

(其实还有其他可以优化的,就是可以在地图的头像上面加一段语音介绍自己等等的,因为小程序其实也是支持的,或者是可以计算我和你的距离

或者是我去你那边的话我过去的导航和路线是怎么样的

二、search组件的布局和样式

(就是在主页的上面添加一个查找的框)

1、实现新建一个叫search的组件

创立好了之后,就可以在首页进行引用了

2、先在index.JSON文件里面引入这个组件

{"usingComponents":{"search":"/components/search/search"}}3、在主页里面和用标签一样引用就可以了

可以直接在index.wxml中通过来使用即可了

该search组件就被引入了

通过基本的结构wxml

取消得到的效果:

会发现我们放大镜图标没有显示出来,所以我们要配置一下,让这个图标可以穿透出来即可了

也就是之前copyText.js写过的

options:{styleIsolation:'apply-shared'},就是为了让这个图标可以生效的

这样的话,我们的放大镜就进来了

之后就可以对search.wxss的样式进行设计了

但是发现,图片和这个组件融合在一起了

这是因为因为是组件的引入的话,就不像在主页面一样,可以占位置的,所以就要到index.wxss设置一下让index腾出一个空间来放这个搜索框的

通过在

就是直接通过margin来腾出位置即可了

上面其实是在index.wxss中给上面的腾出来100rpx的空间

/*components/search/search.wxss*/.container{position:fixed;left:0;top:0;width:100%;height:70rpx;z-index:999;}.search{display:flex;align-items:center;margin:20rpx;}.search-text{display:flex;align-items:center;flex:1;border:1px#cdcdcdsolid;border-radius:10rpx;height:65rpx}.search-text.iconsousuo{margin:010rpx;}.search-cancel{margin:010rpx;}得到的效果就是:

但是有一个问题就是:我们在还没点击搜索的时候,其实不用显示后面的“取消”按钮的,这个的话就要通过js逻辑来实现了

定义了一个isfocus来表示光标有没有显示的(这个取消的按钮其实是在我们获取了光标之后才会有的)

通过在取消按钮加上了一个wx:if判断之后,得到的效果就是:

并且当我们获取到了光标之后,这个搜索框会适应整个页面的高度了

给contaner加上了overflow:hidden;之后得到的效果就是这个搜索框的下边框“不见了”

这个是因为,我们得container这个大得块要比我们输入框得高度要小了,这个时候就可以在wxss里面通过调节container得height

即可了

因为如果我们点击了那个输入框得胡,也就是聚焦了得话,我们得上面得搜索框的大容器显示的样式是和没聚焦的时候显示的不同的,所以我们就可以用三目运算符来通过这个isfocus来决定使用哪个容器,也就是说我们可以定义两个样式不同的容器了

.containerFocus{position:fixed;left:0;top:0;width:100%;height:100%;z-index:999;background:#ccc}然后我们自行的吧js文件里面定义的isFocus变量定义weighted是true来看看我们获取光标之后的效果是怎么样的:

之后我们就要通过逻辑里控制他们的聚焦切换不同的container了,如果是已经点击聚焦的了话,还有一个就是可以看到我们搜索的历史记录,还有列表等等

通过:

历史记录.search-history{display:flex;justify-content:space-between;margin:20rpx;}效果:

然后就是要搞一个搜索池了:

小明123213dsadasd.search-history{display:flex;justify-content:space-between;margin:20rpx;}.search-history-btntext{border:1px#cdcdcdsolid;padding:10rpx20rpx;background:white;border-radius:20rpx;margin:10rpx;}效果:(注意上面是给每一个搜索的text进行样式的定义

上面就吧搜索的关键词的布局搞好了,下面就是要对搜索的列表进行定义了(其实这个搜索的列表和我们好友的列表是很像的,可以直接直接copy在friendList.wxml里面的这个结构了

取消历史记录小明123213dsadasd小喵喵html然后还要在search.js里面通过

(未选中搜索框时

三、实现搜索历史记录及本地缓存

1、我们先在searc.wxml的输入框标签加一个处理点击这个输入框的一个点击事件

还有我们在取消的标签中,也要加一个点击事件,点击了的话就吧isFocus变成是false即可了

取消methods:{handleFocus(){this.setData({isFocus:true});},handleCancel(){this.setData({isFocus:false});}}得到的效果就是:点击输入框,就跳转到输入,点击取消,就跳转到首页

还有一个小bug就是,因为输入框的话,会默认只有在一个范围以内,才可以输入的,所以我们就可以让这个输入框适应整个范围,可以在

给search.wxss中添加一个代码:

.search-textinput{flex:1;}就让这个输入框可以自动的填满整个的搜索框了

3、之后就是对输入的东西进行处理了,可以是边输入边搜索,也可以是输入之后回车了才进行搜索,如果是边输入就边搜索的话,我们可以通过bindinput来进行监听的,那如果要是按回车的时候搜索怎么办呢---这个其实小程序帮我们搞好了

就可以通过在input中加上bindconfirm这个属性来完成的,我们就定义了一个handleConfirm这个方法是只有我们回车了才会进行触发的

默认的是我们的done也就是完成

所以就在input标签中,吧confirm-type属性变成是search即可了,(这样的话在手机的软键盘就会显示搜索两个字了)

(下面我们要做的就是吧这个搜索的放在历史里面管理起来了)

demo:

wx.setStorage({key:"key",data:"value"})设置的话,就是我们用户点击回车之后,就可以吧这个搜索里面的ev.detail.value放到本地存储里面即可了

因为这个setStorage的话,我们要让这个data是一个数组才行的,然后我们先通过

data:[111]看看能不能吧这个111存放到这个数组里面

可以在下面的调试板中找到Storage让我们查看一下

可以看到,我们随便输入一点东西,然后按回车之后可以看到

先在search.js的data里面定义一个数组

然后我们就可以在wxml中,吧我们的历史消息text,用一个数组来for出来了

{{item}}

然后我们在一开始聚焦了之后,就立马从storage里面吧数组拿出来,用getStorage方法:

使用上面的demo之后,会报错,这个报错一般都是因为success的回调的时候要用箭头函数才行的

wx.getStorage({key:'searchHistory',success:(res)=>{this.setData({historyList:res.data});}})修改了之后,我们点击聚焦之后

这个111就是我们刚刚写入到searchStorage数组里面的

(这个有一个小bug,就是,假如我们输入了两次相同的搜索,然后存入到历史记录再打印出来的话,会有两个的,我们不应该有两个相同的历史记录的

但是我们搜索重复词的话,我们也是显示一次,然后把这个搜索的提升到最前面去),表示最近搜索,并且历史记录也要有一个数量的,不能把在一年之间的全部搜索记录都显示出来的

这个去重的功能:1、实现克隆一份数组

(unshift的话就是往数组的头添加东西的,ES6本身就带有一个set来完成去重功能的)

handleConfirm(ev){//console.log(ev.detail.value);letcloneHistoryList=[...this.data.historyList];cloneHistoryList.unshift(ev.detail.value);wx.setStorage({key:"searchHistory",data:[...newSet(cloneHistoryList)]})}我们的效果就达到了,重复输入的话,会被提前,=

然后下面我们就要实现历史记录的删除功能了

就可以直接在这个删除图标的wxml中添加一个bindtap点击事件handleDelete即可了(这个删除的话,是删除掉全部的历史记录的)

wx.clearStorage()直接这样写即可了

====**但是这样可能如果我们后面在storage里面也定义了其他的东西,这个语句的话会把其他缓存也会清理掉的,所以我们这里还是使用remove好点的

wx.removeStorage({key:'key',success(res){console.log(res)}})因为我们也是要在这个成功的回到中,把这个历史数据数组设置为空数组,所以我们就要使用成功返回的箭头函数才行的

THE END
1.珍爱网优质同城推荐http://m.zhenai.com/
2.本地陌交友app最新版下载本地陌交友appv6.3.1安卓版本地陌交友app是一款十分实用的聊天社交软件。用户可以在这里寻找自己心仪的另一半,与TA面对面聊天,同城零距离交友;可以在线上聊天,线下约见,告别单身;还可以发布动态,让别人更加了解自己。 本地陌交友app介绍: 本地陌交友,同城陌生人聊天交友软件。 随时随地与附近高颜值的TA面对面聊天交友约会,为单身男女量身定做,https://www.qqtn.com/azsoft/676069.html
3.附近人软件哪个好?加附近人的软件有哪些?找附近人的交友app下载加附近人的软件让你可以在手机上认识很多附近的新朋友,在这里你可以一键搜索附近的人来聊天,可以根据距离、年龄、性别来精准进行搜索,让你无聊的时候可以找到合适的人来聊天,还可以让你寻找到属于你的另一半来告别单身。结识身边的人,拉近彼此的距离,探讨生活的智慧,在高素质的朋友群中,每天都有大量用户频繁参与,与http://www.downcc.com/k/fjjrdrj/
4.附近聊天交友软件排行榜前十名偏玩手游盒子分享十大附近聊天交友软件排行榜前十名手机应用,编辑为您推荐手机附近聊天交友软件排行榜第一名到前5名到前十名的应用。找附近聊天交友软件有哪些、附近聊天交友软件哪个好用,上偏玩手游盒子https://m.pianwan.com/s/zj-2161554
5.本地同城交友app哪个好软件大全PP助手为您提供本地同城交友app哪个好大全推荐,在这里我们为您提供本地同城交友app哪个好软件下载资源,本地同城交友app哪个好安卓版本、官方版本&老版本下载地址合集,还可查阅相关本地同城交友app哪个好攻略大全,欢迎到PP助手下载。https://wap.pp.cn/topic/1043746/
6.附近蜜约会本地同城交友在附近蜜约会里,可以同城文字交友聊天、附近语音定向交友聊天、在线视频交友聊天、缘分速配音视频交友聊天等,多种多样的交友聊天方式,同城附近的找对象的人,更高效快速找到朋友脱单。 功能特点: 【同城附近交友】登录附近蜜约会,智能匹配同城喜欢的异性,高效约会,脱单更简单! https://app.mi.com/details?id=com.runquan.fjmyh
7.顺德单身靓仔靓女留意了!即日起开启!可在线找同区对象!线上交友旅程 在自己所在区域的交友群中 你可能会认识 经常遇见却不敢搭讪的心动异性 拥有相似生活节奏的默契单身 他们和你 在同一片生活圈子中 产生千丝万缕联系的陌生异性 其中的缘分本就不言而喻 快速“锁住”身边的缘分 禅城区、顺德区 南https://mp.weixin.qq.com/s?__biz=MzAwMTI0NzI4Mw==&mid=2649732464&idx=1&sn=a5f506572bec23dc70f1af86555b747b&chksm=830449384621eb317977438d7cf25a245cf9416f959f9ad2d83338b4db47fb9235234c94545c&scene=27
8.同城约会同城约会是网易公司旗下婚恋交友网站,专为单身男女白领提供征婚交友服务,免费发布约会促成同城交友,坚持诚信相亲,谢绝一夜情。同城约会提倡多多了解,慢慢相爱,是一个绿色的网友见面的相约平台。https://yuehui.163.com/helpcategory.do?id=9
9.与本地交友网上认识的异性约会安全吗附近交友两性约会靠谱吗附近交友两性约会靠谱吗?三次约会定律是什么样的?在本地交友网上聊天很好,对方的情况再好也不能作为https://edu.iask.sina.com.cn/jy/hEijwwKwCl.html
10.本地交友聊天软件合集可靠方便的本地交友聊天软件推荐今天小编给大家推荐几款非常不错的本地交友聊天软件,基于用户的地理位置,提供附近的潜在交友对象的列表,帮助用户找到本地的聊天伙伴或约会对象,支持语音和视频通话功能,用户可以通过更直接的方式进行交流,支持分享生活动态、心情状态等,增加与本地用户的互动机会,喜欢交友的伙伴快来下载一款试试吧!https://www.yxbao.com/zhuanti/bdjyltrjhj/
11.本地陌交友软件下载本地陌交友app下本地陌交友app 【精彩动态】附近动态刷不停,走进她的内心世界,了解TA动态,告别“尬聊”,默默拉进彼此距离,找到有趣的灵魂。 【一键闪聊】同城聊天,通过大数据精准快速匹配你心仪的TA,陪你聊天,交友约会。让陌生聊天交友更加丰富有情趣,告别闲聊! 【同城交友】同城交友约会,自由选择线上高颜值妹子,线上交友聊呗,线下https://m.xgbbs.net/app/40879.html
12.本地同城交友APP推荐本地同城交友下载而本地同城交友app则为我们提供了一个方便快捷的平台。无论是想找到共同爱好的朋友,还是寻求一段有趣的友谊,这款app都能满足你的需求。通过它,你可以轻松地了解附近的人,结识志同道合的朋友。无论你是新来的城市,还是想要扩大社交圈子,本地同城交友app都能帮助你实现目标。更重要的是,它提供了一个安全可靠的https://www.wandoujia.com/bangdan/568018/
13.东莞本地交友东莞本地交友服务东莞找附近的人 东莞附近的人聊天 东莞搜索附近的人 东莞同城好友东莞本地交友周边城市 广州本地交友 深圳本地交友 潮州本地交友 佛山本地交友 河源本地交友 惠州本地交友 江门本地交友 揭阳本地交友 茂名本地交友 梅州本地交友 清远本地交友 汕头本地交友 汕尾本地交友 韶关本地交友 阳江本地交友 云浮本地交友http://m.iyuedan.com/gddg/jiaoyou/t3344986.html
14.本地密聊交友app下载本地密聊交友平台app正版下载v1.8.5本地密聊是一款专为确保通信保密和隐私而设计的本地交友软件。它为用户提供了一个安全的沟通平台,让用户可以放心安全的交友聊天,轻松找到志同道合的朋友或者自己的另一半,想要脱单的朋友不妨来下载试试看吧。 本地密聊软件介绍 本地密聊是一款集附近交友、语音聊天、视频通话等多功能为一体的实时互动社交软件。在这里http://www.sgcha.cn/soft/65901.html
15.本地聊天app下载本地聊天交友最新版v1.0.0有趣的语音聊天交友平台 应用介绍 本地聊天是一款很受欢迎的交友社区,本地聊天为你带来更好的真人交友服务,用户可以实时的查看自己附近的好友,一起在线进行互动交流,来自各地的朋友汇聚在这里,一起在线进行互动交流,随时可以在线进行聊天互动,自由的在线进行聊天交友,帮助用户更好的扩大自己的朋友圈子,放心的在线进行互https://www.doyo.cn/app/379087.html
16.本地爱APP下载本地爱(同城约会)V1.0.1安卓版下载本地爱APP特色 【有趣】线上聊天,线下见面,结识附近有缘,告别传统交友软件的枯燥。 【方便】在线约会交友找对象,同城约会助手,让你轻松找到属于你的比邻佳缘! 【同城交友】同城单身男女云集,只想约会单身的你! 【恋爱】同城单身男女,在线交友,智能定位,找到适合你的有缘人,大胆约见你的珍爱,让“约会交友”更轻松http://www.winwin7.com/azapp/51939.html
17.本地同城聊下载本地同城聊(真人聊天)app下载3、也可以根据你的交友标准来为你推荐优质用户,让你轻松交到自己心仪的对象。 本地同城聊亮点 1、是一款集“语音聊天、附近交友、速配社交”为一体的附近单身男女实时互动交友平台。 2、致力于为陌生人打造“真诚、绿色、健康“的交友环境,即时聊天,在线暖心倾述感情。 3、同城附近随机匹配交友,来遇见你的缘分,开https://www.voo0.com/y/43060.html