javascript - 在 v-bind 中访问 Vuex

标签 javascript vuejs2 vue.js vuex

我想从 v-bind 中的 Vuex 存储模块访问一个值。

<input @blur="validate_field" 
       name="firstName" 
       placeholder="First Name" 
       :class="{fail: this.$store.state.formStore.signupForm.errors.firstName}"
/>

这会引发以下错误:

类型错误:无法读取未定义的属性“signupForm”

我尝试添加以下内容:

computed: {
  ...mapState({
    signupForm: state => state.formStore.signupForm
  })
}

并将失败的行替换为:

:class="{fail: signupForm.errors.firstName}"

还有一大堆其他的东西,都无济于事。有什么想法吗?

编辑:这是我的商店:

const state = {
  // data
  formStore: {
    // data
    signupForm: {
    // data
      errors: {
        // NO data
      }
    }
  }
}

最佳答案

感谢@wes 在评论中指出有关 react 性的文档。

Here文档说:

Due to the limitations of modern JavaScript (and the abandonment of Object.observe), Vue cannot detect property addition or deletion.

我正在动态填充错误对象。原来 Vue.js 没有检测到这一点,因此无法对此使用react。

加上 firstName,它就可以工作了:

const state = {
  // data
  formStore: {
    // data
    signupForm: {
    // data
      errors: {
        firstName: ''  <--------
      }
    }
  }
}

教训是:您希望 Vue 响应的所有属性都必须显式声明。

关于javascript - 在 v-bind 中访问 Vuex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41797514/

相关文章:

javascript - parsley.js - 数据欧芹错误容器

javascript - 是否可以作为 Slack 团队中的任何用户发布到 chat.postMessage?

javascript - 自定义指令 v-focus 在 Vue 应用程序中使用 v-show 输入

javascript - 从 vue 中的子组件访问 key

javascript - 在 vue.js 应用程序中设置视口(viewport)元标记

javascript - 在 Javascript 中执行 ruby​​ 方法 - Ruby on Rails 应用程序

javascript - Vue 兄弟组件 Hook 生命周期关系

typescript - 如何使用 TypeScript 在 Vue.js 中使用 Provide/Inject

vue.js - Yarn add raise error 缺少要添加到项目中的包列表

javascript - vue-youtube-embed 无法读取 null 的属性 'src'