Vuex中state里的值变了,但页面没起效

页面代码:

<div class="btn-fullscreen" @click="switchFullscreen()">
    <el-tooltip effect="dark" placement="bottom" :content="fullscreen?`取消全屏`:`全屏`">
        <i class="el-icon-rank"></i>
    </el-tooltip>
</div>
                
<script>
import { mapState, mapActions } from 'vuex'

export default {
    computed: mapState({
        fullscreen: state => state.fullscreen
    }),
    methods: mapActions('header', [
        'switchFullscreen'
    ])
}
</script>

Store:

// initial state
const state = {
  collaspe: false,
  fullscreen: false
}

// getters

// actions
const actions = {
  switchFullscreen ({ state, commit }) {
    commit('setFullscreenState')
  }
}

// mutations
const mutations = {
  setFullscreenState (state) {
    state.fullscreen = !state.fullscreen
  }
}

export default {
  state,
  actions,
  mutations
}

点击按钮后,跟踪Devtool里, state.fullscreen里的值会变化
图片描述

但按钮的提示一直是“全屏”,无论fullscreen的值怎么变
图片描述

好像页面上的fullscreen和state里的fullscreen没有绑定在一起,我无论将state里的fullscreeen的默认值改成什么值,在初始化后页面都显示"全屏"

阅读 7.3k
4 个回答
computed: mapState({
        fullscreen: state => state.fullscreen
    }),

这个地方出问题了,少了module名,谢谢各位

试试这个


<div class="btn-fullscreen" @click="switchFullscreen()">
<el-tooltip effect="dark" placement="bottom">
    <div slot="content">{{fullscreen?'取消全屏':'全屏'}}</div>
    <i class="el-icon-rank"></i>
</el-tooltip>
</div>
this.$nextTick(){}

用这个试试

会不会是样式问题遮挡??

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题