在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vuex實(shí)現(xiàn)點(diǎn)贊功能?

vuex實(shí)現(xiàn)點(diǎn)贊功能?

在項(xiàng)目中用vuex實(shí)現(xiàn)點(diǎn)贊功能的時(shí)候出現(xiàn)了許多bug怎么想也想不到
有一個(gè)資訊列表 點(diǎn)擊某條資訊進(jìn)去詳情頁會(huì)有一個(gè)is_liked來判斷是否點(diǎn)贊,如果is_liked=1表示點(diǎn)贊按鈕變紅,is_liked=0未點(diǎn)贊按鈕為灰色
這是資訊詳情的接口
clipboard.png
這是點(diǎn)贊的接口

clipboard.png
我剛進(jìn)去資訊詳情就先把is_liked存到vuex里面了
getinfos() {

    var id=this.$route.query.id;
    this.$http.get(`/api/api/news/newsdetail?source=pc&news_id=${id}&net_work=3`)
      .then(function (res) {
          this.info=res.body.data
        this.$store.dispatch('setLiked', res.body.data.is_liked);
        })
 然后去判斷是否點(diǎn)贊
  isdz(){
    if (this.$store.state.isliked==0) {
        $('.buts').addClass('')
    } else{
        $('.buts').addClass('changes')
    }
  },

沒有點(diǎn)贊去點(diǎn)贊,點(diǎn)贊了取消點(diǎn)贊
dianzan() {

    $('.buts').toggleClass('changes')
    $('.zan-span').show(30).delay(300).hide(30);
    if (this.$store.state.isliked==0) {
        var id=this.$route.query.id;
    var token=sessionStorage.getItem("userToken")
    this.$http.get(`/api/api/user/likerecord?source=pc&res_id=${id}&res_name=news&token=${token}`)
    .then(function(res){
        this.$store.dispatch('setLiked', 1);
    })
    .catch(function(error){
        console.log(error)
    })
    } else if(this.$store.state.isliked==1){
    var id=this.$route.query.id;
    var token=sessionStorage.getItem("userToken")
    this.$http.get(`/api/api/user/likerecord?source=pc&res_id=${id}&res_name=news&token=${token}`)
    .then(function(res){
        this.$store.dispatch('setLiked', 0);
    })
    .catch(function(error){
        console.log(error)
    })
    }
  },
  現(xiàn)在的問題就是要么點(diǎn)擊一個(gè)全部都點(diǎn)贊了  要么是點(diǎn)擊一個(gè)is_liked=0的頁面全部的點(diǎn)贊都被取消掉
  
  這是store.js的代碼
  
  import Vue from 'vue'

import Vuex from 'vuex'
import vuexAlong from 'vuex-along'
import * as getters from './getters'
import * as mutations from './mutations'
import * as actions from './actions'
Vue.use(Vuex)

// 集中狀態(tài)

var store= new Vuex.Store({

state:{
    userInfo: null, //用戶信息
    isLogin:false,  //用戶是否登錄
    token:'',
    isliked:0
},
mutations,
getters,
actions,
plugins: [vuexAlong]

})
export default store
這是mutations里面的
export const userStatus=(state,user)=>{

if (user) {
    state.userInfo=user
    state.isLogin=true
}else if(user==null){
    sessionStorage.setItem("nickname",null);
    sessionStorage.setItem("userToken","");
    sessionStorage.setItem("id","");
    state.userInfo=null;
    state.isLogin=false;
    state.token='';
}

}
export const liked=(state,payload)=>{

state.isliked=payload

}
這是actions的
export const setUser=({commit},user)=>{

commit("userStatus",user)

}
export const setLiked=({commit},payload)=>{

commit("liked",payload)

}
這是getters的
export const userInfo=state=>state.userInfo
export const isLogin=state=>state.isLogin
export const isliked=state=>state.isliked

也不知道是哪的問題

回答
編輯回答
瞄小懶

isdz(){

if (this.$store.state.isliked==0) {
    $('.buts').addClass('')
} else{
    $('.buts').addClass('changes')
}

什么鬼玩意,用了vue,但卻用jquery控制view?還是說你用了vuex卻沒用vue?

2017年4月5日 12:05
編輯回答
青瓷

isdz()方法,感覺有點(diǎn)不對(duì)勁。

2017年2月16日 20:06
編輯回答
何蘇葉

點(diǎn)擊一個(gè)全部都變了,我估計(jì)是因?yàn)槟憬壎送粋€(gè)變量

2018年4月14日 13:27