请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

实在是麻烦老师了

图片描述

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'])
  }
}

正在回答 回答被采纳积分+3

2回答

扬_灵 2020-08-10 18:11:04

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

1 回复 有任何疑惑可以回复我~
  • 提问者 慕用1916611 #1
    老师你好 我后面修改成了setcurrentBook还是不行,直到我修改成
    this.$store.dispatch('setcurrentBook', this.book) 才提交的上 提交的类型也是Object
    回复 有任何疑惑可以回复我~ 2020-08-10 22:14:30
  • 扬_灵 回复 提问者 慕用1916611 #2
    应该是没有找到vuex中的currentBook方法,在页面中没有mixin混入ebookreader组件中吗?
    回复 有任何疑惑可以回复我~ 2020-08-11 08:59:48
  • 提问者 慕用1916611 回复 扬_灵 #3
    引用了 但也报错 所以就很奇怪
    回复 有任何疑惑可以回复我~ 2020-08-11 18:54:08
提问者 慕用1916611 2020-08-10 22:16:54

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

https://img1.sycdn.imooc.com//szimg/5f3156bc09f0e5df09130742.jpg

这是因为我没设置setter吗?

0 回复 有任何疑惑可以回复我~
  • 扬_灵 #1
    如果没有设置 setter,也就是传入的是一个函数,或者传入的对象里没有 set 属性,当你尝试直接该改变这个这个计算属性的值,都会报这个错误。
    回复 有任何疑惑可以回复我~ 2020-08-11 08:56:50
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信