微信小程序仿朋友圈,实现点赞和评论功能

  • Post author:
  • Post category:小程序


本文 主要讲 大概的实现,思路。有不同想法的可以私信我。

首先的话是准备工作

布局

自己模拟的后台传送数据

commandArraylist:[
      {
        userUrl:'/assets/logo/jiatui-logo.jpg',
        articleUrl:'/assets/images/simple.jpg',
        username:'心动云',
        userpression:'公司',
        articleTitle:'2019,深圳开荒牛的TO B拓荒路',
        data:'昨天',
        praiseFlag:false,
        lovePointUser:'稻草人,玩笑而,加推你好啊,万众杀戮空间,是街坊邻居',
        commandUserList:[
          {
            name:'zero',
            text:'厉害'
          },
          {
            name: '华仔',
            text: '不错'
          },
          {
            name: '方知',
            text: 'hello'
          },
          {
            name: '吴氏生飞 地产老猫',
            text: '好产品'
          },
        ]
      },
      {
        userUrl: '/assets/logo/jiatui-logo.jpg',
        articleUrl: '/assets/images/simple.jpg',
        username: '加推科技',
        userpression: '公司',
        articleTitle: '2019,深圳开荒牛的TO B拓荒路',
        data: '昨天',
        praiseFlag: false,
        lovePointUser: '稻草人,玩笑而,加推你好啊,万众杀戮空间,是街坊邻居',
        commandUserList: [
          {
            name: 'zero',
            text: '厉害'
          },
          {
            name: '华仔',
            text: '不错'
          },
          {
            name: '方知',
            text: 'hello'
          },
          {
            name: '吴氏生飞 地产老猫',
            text: '好产品'
          },
        ]
      },
      {
        userUrl: '/assets/logo/jiatui-logo.jpg',
        articleUrl: '/assets/images/simple.jpg',
        username: '加推科技',
        userpression: '公司',
        articleTitle: '2019,深圳开荒牛的TO B拓荒路',
        data: '昨天',
        praiseFlag: false,
        lovePointUser: '稻草人,玩笑而,加推你好啊,万众杀戮空间,是街坊邻居',
        commandUserList: [
          {
            name: 'zero',
            text: '厉害'
          },
          {
            name: '华仔',
            text: '不错'
          },
          {
            name: '方知',
            text: 'hello'
          },
          {
            name: '吴氏生飞 地产老猫',
            text: '好产品'
          },
        ]
      },
    ]

还有就是在 每个评论上面加一个自定义数据,我是data-current=index,来标识每个不同的动态分享,不然一点赞,就所有动态都点赞了,就不好了。在data里面定义一个commandTab,接收这个自定义值,留着后面大用

第一:我们先做评论和点赞框带动画的显示事件commandClick(点完显示赞,和评论的那个横框框,名字取得 随意吧。。)

first:获取这一条动态的唯一标识符,就是前面说的dataset的数据,然后,吧值赋给commandTab,就能做到指定显示,

        <view class="list-command-btn" wx:if='{{commandTab == index}}' animation="    {{animationData}}">   
            //这里的 commandTab == index 控制指定的评论和点赞区的显示 
          <view class="btn-command" bindtap="praiseThumbsClick" >
            <image src="/assets/logo/love.png"></image>
            <text hidden="{{item.praiseFlag}}">赞</text>
            <text hidden="{{!item.praiseFlag}}">取消</text>
          </view>
          <text>|</text>
          <view class="btn-command" bindtap="inputCommandClick">
            <image src="/assets/logo/consultation.png"></image>
            <text>评论</text>
          </view>
        </view>

second:

在 这个 过程中加上动画,第一次点击显示,再点隐藏,再点显示,再点隐藏。

我的思路呢就是,data加一个commandHiddenFlag 标识框框的显示 还是隐藏,

我的主要想法,给commandTab初始值99,点击的时候,判断commandTab和current是否相等,当然是不相等 我们commandTab初始值设的是99

如果不相等:commandHiddenFlag 的值变成false,评论区由隐藏——>显示,做一个出现的动画,吧current赋值给  commandTab,标识我们现在评论区已经显示了,

如果相等:current==commandTab说明是刚才点击过了,评论区由显示—>隐藏,做一个慢慢退厂的动画,

关键点:每个退厂之后,都要把commandTab重新赋值为99(设一个定时器200毫秒),表示一次结束,不然current==commandTab就一直相等了,就没有出现动画了

然后,我们再来做点赞功能,

点赞就比较简单了,根据刚才的commandTab找到 指定动态,在json数组里面的位置,吧里面的赞标识符praiseFlag改成false就行了.

评论功能

评论我自己做的比较乱,主要问题就是,点击评论的时候,我获取不到在父元素点赞评论区域 上设置的的data-set

为什么评论会出现这个问题?点赞不会出现,

因为:评论的时候,输入框弹出来,点赞评论区域已经隐藏了,那么commandTab变成99,等我输入完评论以后,就找不到当前动态的标识符了,找不到就不能修改json 数组里面的数据,而点赞的时候,commandTab还没有变成99,设一个定时器200毫秒。

点击右边的评论按钮,点赞评论区显示——>点赞(评论)按钮——>点赞评论区隐藏

卡点:父元素上设置的dataset,在子元素上面获取不到,

迁就解决办法,再来一个变量,在前面的父元素的操作中,就是点赞评论区展开动画的时候,保留下来获取到的父元素的dataset

评论的那个弹框,我的处理是,input先fixed隐藏在最下面,点了评论以后显示,同时focus

adjust-position Boolean true 键盘弹起时,是否自动上推页面
cursor-spacing Number / String 0 指定光标与键盘的距离,单位px(2.4.0起支持rpx)。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离

一个是 吧底部的input推上来的效果,推上来会被盖住,一部分,用cursor-spacing调一下距离,



版权声明:本文为weixin_43784256原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。