【问题标题】:Error in render Vuex渲染 Vuex 时出错
【发布时间】:2018-07-23 08:17:19
【问题描述】:

我目前正在使用 Vuex 和 Vue 建立一个项目,但遇到了一个奇怪的问题。我推测它与渲染顺序有关,但经过多次尝试更改代码无济于事,我仍然不确定。

我尝试的是在父级中使用 getter 访问状态并使用插槽传递它,而不是直接在子级中传递,因为它应该是这样,我将在此处发布。

我尝试使用 $this.$store.state 传递值仍然未定义,但是在控制台使用实例上的方法记录它时,所有数据都在那里。

这是我的代码的link

那里的错误类似于我自己的控制台中的错误:

[Vue warn]: Error in render: "TypeError: Cannot read property 'state' of undefined"

提前感谢愿意花时间查看它的任何人。

P.S:将其更改为 store.state.stake.value 后会显示内容,但会出现另一个错误,即 [Vue warn]: Invalid handler for event "click": got undefined

【问题讨论】:

    标签: javascript vue.js vuex vuex-modules


    【解决方案1】:

    强调文本在您的突变中,您正在使用this.$store.state 访问状态。这是错误的,因为this 没有指向 vue 实例。

    突变处理程序接收state 作为第一个参数:

    myMutation(state){
        //use state argumentt to access state
    }
    

    这里是updated code sandbox

    还有一件事:mapMutations 是一个帮助器,它将组件方法映射到 store.commit 调用。所以它们只是组件中的方法将它添加到 methods 选项而不是 computed 因为它们不计算任何东西

    【讨论】:

    • 我在尝试 this.$store 之前尝试了 state.stake.value,但它仍然没有成功。使用 store.state.stake.value 还有另一个错误 - [Vue warn]: Invalid handler for event "click": got undefined PS:更新沙箱的链接似乎不起作用,请重新发送
    • 在codesandbox上它似乎可以工作,但是在我自己的本地应用程序中,即使遵循了所有建议,它仍然得到[Vue warn]: Error in render: "TypeError: Cannot read property 'stake' of undefined"如果我在index.js文件中使用store.state,似乎工作,但只有 state.stake.value 它解析为未定义。我将它设置为 store.state.stake.value ,当我这样做时,并将 store 作为函数的参数传递,这样我就不会收到事件错误,它说它无法读取属性未定义的股份......
    【解决方案2】:

    将状态作为参数传递给您的突变函数,如下所示:

    increment(state) { 
      state.stake.value += 1;
    },
    

    您不需要这样做。$store 在您的商店中。仅在您的 vue 组件中

    【讨论】:

    • 是的,我知道,但它不适用于简单的 state.stake.value 这就是我尝试将其作为替代方案的原因
    • 在函数增量中将状态作为参数传递。在您的示例代码中,当状态应该在内部时,“增量”之后的括号中没有任何内容,就像它在 getter 中的箭头函数中一样。在 getter stakeValue: state => {} => 之前的状态是函数中的参数。对增量和减量执行相同的操作,它应该可以工作
    • 在代码和框上它似乎可以工作,但在我自己的本地应用程序中,即使遵循了所有建议,它仍然得到 [Vue warn]: Error in render: "TypeError: Cannot read property 'stake' of undefined" 如果我​​在 index.js 文件中使用 store.state,它似乎可以工作,但只有 state.stake.value 会解析为 undefined。我将它设置为 store.state.stake.value ,当我这样做时,将 store 或 state 作为函数的参数传递,这样我就不会收到事件错误,它说它可以' t 读取未定义的财产权益。
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 2017-06-05
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多