返回顶部
首页 > 资讯 > 前端开发 > VUE >VUE如何使用vuex模拟实现新闻点赞功能
  • 355
分享到

VUE如何使用vuex模拟实现新闻点赞功能

2024-04-02 19:04:59 355人浏览 泡泡鱼
摘要

这篇文章主要介绍Vue如何使用vuex模拟实现新闻点赞功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!回顾新闻详细页很早我们的新闻详情页是在news-detail.vue 组件里,

这篇文章主要介绍Vue如何使用vuex模拟实现新闻点赞功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

回顾新闻详细页

很早我们的新闻详情页是在news-detail.vue 组件里,获取服务器数据,然后把数据保持到组件的data 里,既然我们已经用到了vuex,学习了它的state,我们就应该想到把返回的数据交给state 来存储。

1.首先在Vuex.Store 实例化的时候:

  state:{
    user_name:"",
    newslist:[],
    newsdetail:{}
  },

增加一个newsdetail 对象,newslist 数组是我们前面用来保存新闻列表数据的。

2.下面就要看在news-detail.vue 组件里,怎么请求数据,然后交给newsdatail :

<script>
  export default{
    // 创建的时候[生命周期里]
    created(){
      this.$Http.get("http://localhost/newsdetail.PHP?id="+this.$route.params.newsid).then(function(res){
        this.$store.state.newsdetail = res.body;
      },function(res){
        // 处理请求失败
      });
    },
  }
</script>

通过this.$store.state.newsdetail = res.body; 就把服务器返回的新闻详细数据保存起来了。

3.那么模板上怎么展示?

<div class="page-header">
  <h3>{{this.$store.state.newsdetail.title}}<small>{{this.$store.state.newsdetail.pubtime}}</small></h3>
  <p>点赞数:{{this.$store.state.newsdetail.agree}} <button class="btn btn-success">点赞</button></p>
  <p>{{this.$store.state.newsdetail.desc}}</p>
</div>

VUE如何使用vuex模拟实现新闻点赞功能

这里我们要来实现一个点赞功能

点击“点赞”按钮,就更改点击数。

其实就是更改newsdetail 里的agree 属性。

本文参考文档:https://vuefe.cn/vuex/actions.html

import Vuex from 'vuex';
Vue.use(Vuex);

const vuex_store = new Vuex.Store({
  state:{
    user_name:"",
    newslist:[],
    newsdetail:{}
  },
  mutations:{
    showUserName(state){
      alert(state.user_name);
    },
    setAgree(state,agreeNum){
      state.newsdetail.agree = agreeNum;
    }
  },
  actions:{
    agree(context,newsid){
      // 进行请求,获取点赞后的agree字段属性值
      Vue.http.post("http://localhost/agree.php",{newsid:newsid},{emulateJSON:true}).then(function (res) {
        // 处理业务
        // 调用上面setAgree方法更新点赞数
        context.commit("setAgree",res.body.agree);
      },function(){})
    }
  },
  getters:{
    getNews(state){
      return state.newslist.filter(function (news) {
        return !news.isdeleted;
      })
    }
  }
})

actions 里定义了一个方法agree 发送网络请求,获取最新的点赞数。

同时mutations 里定义了一个setAgree 方法,用来同步页面上的点赞数。

agree(context,newsid){
      // 进行请求,获取点赞后的agree字段属性值
      Vue.http.post("http://localhost/agree.php",{newsid:newsid},{emulatejsON:true}).then(function (res) {
        // 处理业务
        // 调用上面setAgree方法更新点赞数
        context.commit("setAgree",res.body.agree);
      },function(){})
    }

重点说明:这里发送http请求,和组件里不一样,需要注意。

那么,组件里怎么调用这里的agree 方法呢?

<button class="btn btn-success" @click="submitAgree">点赞</button>
methods:{
      submitAgree(){
        // 组件了调用actions里定义的agree方法
        this.$store.dispatch("agree",this.$store.state.newsdetail.id)
      }
    }

news-detail.vue 组件全部代码:

<template>
  <div class="news-detail">
    <div class="row">
      <div class="page-header">
        <h3>{{this.$store.state.newsdetail.title}}<small>{{this.$store.state.newsdetail.pubtime}}</small></h3>
        <p>点赞数:{{this.$store.state.newsdetail.agree}} <button class="btn btn-success" @click="submitAgree">点赞</button></p>
        <p>{{this.$store.state.newsdetail.desc}}</p>
      </div>
    </div>
  </div>
</template>

 
 

<script>
  export default{
    // 创建的时候[生命周期里]
    created(){
      this.$http.get("http://localhost/newsdetail.php?id="+this.$route.params.newsid).then(function(res){
        this.$store.state.newsdetail = res.body;
      },function(res){
        // 处理请求失败
      });
    },
    methods:{
      submitAgree(){
        // 组件了调用actions里定义的agree方法
        this.$store.dispatch("agree",this.$store.state.newsdetail.id)
      }
    }
  }
</script>

VUE如何使用vuex模拟实现新闻点赞功能 

后端程序增加点赞数,这里就不赘述了。只需返回一个json对象:

{"status":"success","agree":100}

以上是“VUE如何使用vuex模拟实现新闻点赞功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: VUE如何使用vuex模拟实现新闻点赞功能

本文链接: https://lsjlt.com/news/69653.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • VUE如何使用vuex模拟实现新闻点赞功能
    这篇文章主要介绍VUE如何使用vuex模拟实现新闻点赞功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!回顾新闻详细页很早我们的新闻详情页是在news-detail.vue 组件里,...
    99+
    2024-04-02
  • JavaScript如何实现评论点赞功能
    这篇文章主要为大家展示了“JavaScript如何实现评论点赞功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript如何实现评论点赞功能”这篇文...
    99+
    2024-04-02
  • php如何实现点赞取消功能
    本篇内容介绍了“php如何实现点赞取消功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php实现点赞取消功能的方法:首先判断用户是否点赞;...
    99+
    2023-06-20
  • 如何使用Redis实现点赞取消点赞
    这篇文章将为大家详细讲解有关如何使用Redis实现点赞取消点赞,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码实现:    private void&n...
    99+
    2023-06-29
  • vue使用WebSocket模拟实现聊天功能
    效果展示 两个浏览器相互模拟 1.创建模拟node服务 在vue根目录下创建 server.js 文件模拟后端服务器 **在server终端目录下载 ** npm insta...
    99+
    2024-04-02
  • Spring Cloud中怎么使用Redis实现点赞和取消点赞功能
    Spring Cloud中怎么使用Redis实现点赞和取消点赞功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、Redis 缓存设计及实现...
    99+
    2024-04-02
  • 帝国cms首页列表页如何实现点赞功能
    这篇文章主要介绍了帝国cms首页列表页如何实现点赞功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。查看帝国cms建站程序新闻系统的内容页模...
    99+
    2024-04-02
  • vue如何使用点击事件实现num加减功能
    这篇文章将为大家详细讲解有关vue如何使用点击事件实现num加减功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。<!DOCTYPE html> &...
    99+
    2024-04-02
  • 如何使用vue实现打印功能
    这篇“如何使用vue实现打印功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用vue实现打印功能”文章吧。第一种方法...
    99+
    2023-07-04
  • 如何使用Vue-Router2实现路由功能
    这篇文章主要为大家展示了“如何使用Vue-Router2实现路由功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Vue-...
    99+
    2024-04-02
  • 如何使用vue实现计时器功能
    小编给大家分享一下如何使用vue实现计时器功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下首先我们要知道setTimeout和setInterval的区别setTimeout只在指定时间后执行一次,代码如下:...
    99+
    2023-06-20
  • 怎么使用vue实现锚点定位功能
    本文小编为大家详细介绍“怎么使用vue实现锚点定位功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用vue实现锚点定位功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。这里主要是实现了一个简单的滚动触发...
    99+
    2023-07-04
  • 如何使用Vue的过滤器功能来实现模糊搜索
    Vue.js是一款流行的JavaScript框架之一,它提供了许多有用的功能,包括Vue的过滤器。在本文中,我们将介绍如何使用Vue的过滤器功能来实现模糊搜索。在Vue.js中,过滤器是用于转换文本的函数,常常用于格式化文本输出。在本例中,...
    99+
    2023-05-14
  • 如何使用vue实现手写签名功能
    本篇内容介绍了“如何使用vue实现手写签名功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 个人实现截图:安装:npm inst...
    99+
    2023-06-20
  • 如何使用Vue实现拖动截图功能
    这篇文章主要介绍了如何使用Vue实现拖动截图功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Vue实现拖动截图功能文章都会有所收获,下面我们一起来看看吧。一、安装html2canvas、vue-cro...
    99+
    2023-07-04
  • php如何实现模拟银行存取钱功能
    这篇文章主要介绍“php如何实现模拟银行存取钱功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何实现模拟银行存取钱功能”文章能帮助大家解决问题。建立数据库首先,我们需要建立一个数据库来存储...
    99+
    2023-07-05
  • 如何使用PHP开发微信小程序的新闻阅读功能?
    如何使用PHP开发微信小程序的新闻阅读功能?微信小程序成为了近年来移动应用开发的热门选择,它的轻量化、便捷性和开放性让开发者们备受青睐。在微信小程序中,实现新闻阅读功能是一个常见的需求。本文将介绍如何使用PHP开发微信小程序的新闻阅读功能,...
    99+
    2023-10-27
    微信小程序 PHP开发 新闻阅读功能
  • Android开发中使用sqlite实现新闻收藏和取消收藏的功能
     之前学习oracle,简单的认为数据库只存在服务器端,学习安卓之后才发现原来android和Ios本身是“携带”数据库的——SQLite,是轻量级的、嵌入式的、关系...
    99+
    2022-06-06
    android开发 SQLite Android
  • JavaWeb如何使用mvc模式实现登录功能
    这篇文章给大家分享的是有关JavaWeb如何使用mvc模式实现登录功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。部署项目、环境搭建 详细内容  1.导包  &...
    99+
    2023-06-29
  • 如何用vuex代码实现简单的购物车功能
    这篇“如何用vuex代码实现简单的购物车功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作