老师你好 不知道哪里写错了 代码添加了vuex之后直接就没办法渲染

来源:4-7 字号设置功能实现

慕用1916611

2020-08-10

实在是麻烦老师了

图片描述

ebookreader页面
图片描述

action页面

const actions = {
    setName: ({ commit }, fileName) => {
      return commit('setName', fileName)
    },
    setmenuVisible: ({ commit }, menuVisible) => {
      return commit('setmenuVisible', menuVisible)
    },
    setVisible: ({ commit }, settingVisible) => {
      return commit('setVisible', settingVisible)
    },
    defaultFontSize: ({ commit }, defaultFontSize) => {
      return commit('defaultFontSize', defaultFontSize)
    },
    currentBook: ({ commit }, currentBook) => {
      return commit('currentBook', currentBook)
    }
}

export default actions

store index.js页面

import Vue from 'vue'
import Vuex from 'vuex'
import actions from '../store/actions'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    fileName: '',
    menuVisible: false,
    settingVisible: -1,
    // -1不显示,0字号,1主题,2进度,3目录
    defaultFontSize: 16,
    currentBook: null
  },
  mutations: {
    setName: (state, fileName) => {
      state.fileName = fileName
        },
    setmenuVisible: (state, menuVisible) => {
      state.menuVisible = menuVisible
        },
    setVisible: (state, settingVisible) => {
      state.settingVisible = settingVisible
        },
    defaultFontSize: (state, defaultFontSize) => {
      state.defaultFontSize = defaultFontSize
        },
    currentBook: (state, currentBook) => {
      state.currentBook = currentBook
      }
    },
  actions: actions,
  getters: {
    fileName: state => state.fileName,
    menuVisible: state => state.menuVisible,
    settingVisible: state => state.settingVisible,
    defaultFontSize: state => state.defaultFontSize,
    currentBook: state => state.currentBook
  },
  modules: {
  }
})

mixin,js页面

import { mapActions, mapGetters } from 'vuex'
export const ebookMinxin = {
  computed: {
    ...mapGetters(['fileName', 'menuVisible', 'settingVisible', 'defaultFontSize', 'currentBook'])
  },
  methods: {
    ...mapActions(['setmenuVisible', 'setName', 'setVisible', 'defaultFontSize', 'currentBook'])
  }
}
写回答

2回答

扬_灵

2020-08-10

同学你好,这个报错是currentBook不是一个函数,在你的vuex代码中定义了一个currentBook变量又定义了一个currentBook方法使用混入的方式导入到ebookreader组件中,这里获取的可能是currentBook对象,你现在这里打印一下看看this.currentBook是一个函数还是一个变量,另外在你的代码中应该先定义this.book,然后在将Book对象存入vuex中,如果不能解决你的问题,可以继续追问。

1
4
扬_灵
回复
慕用1916611
可以把代码上传一下吗,我在本地给你定位一下问题。
2020-08-12
共4条回复

慕用1916611

提问者

2020-08-10

然后。。。。现在又突然多了几个报错。。。

//img.mukewang.com/szimg/5f3156bc09f0e5df09130742.jpg

这是因为我没设置setter吗?

0
1
扬_灵
如果没有设置 setter,也就是传入的是一个函数,或者传入的对象里没有 set 属性,当你尝试直接该改变这个这个计算属性的值,都会报这个错误。
2020-08-11
共1条回复

Vue 实战商业级读书Web APP完整项目

Vue全家桶+最新前端技术+前后端分离架构,完整项目流程

1610 学习 · 1951 问题

查看课程