亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VUE如何使用vuex模擬實現新聞點贊功能

發布時間:2021-07-01 14:50:53 來源:億速云 閱讀:157 作者:小新 欄目:web開發

這篇文章主要介紹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模擬實現新聞點贊功能”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

赤城县| 田东县| 从化市| 贡嘎县| 云龙县| 丁青县| 哈尔滨市| 隆德县| 扎囊县| 绵阳市| 农安县| 临潭县| 高要市| 黄骅市| 霞浦县| 纳雍县| 承德市| 宁河县| 吉安市| 钟祥市| 富宁县| 宕昌县| 同心县| 龙门县| 桑植县| 卢氏县| 揭阳市| 肥城市| 宁海县| 定襄县| 荥经县| 临泉县| 麟游县| 普兰店市| 阳高县| 韩城市| 德清县| 宽城| 汝南县| 若尔盖县| 图们市|