在vuex中状态更改后,vue组件的视图不会重新呈现吗?

梦中梦

最近,我了解了vue及其与之相对应的vuex。但是由于某些原因,vuex中的状态变化不会触发对vue组件中视图的反应性更新。

export const store = new Vuex.Store({
    state: {
        user: {
            id: -1,
            books: []
        }
    },
    mutations: {
        ADD_BOOK(state, book) {
            state.user.books.push(book);
        }
    },
    actions: {
        addBook(context, book) {
            context.commit('ADD_BOOK', book);
        }
    },
    getters: {
        books: state => {return state.user.books}
    }
})

在我的Vue组件中:

<template>
    <div>
        ...
        <div>
            <ul>
                <li v-for="book in books">
                    {{ book.name }}
                </li>
            </ul>
        </div>
        <div>
            <form @submit.prevent="onSubmit()">
                <div class="form-group">
                    <input type="text" v-model="name" placeholder="Enter book name">
                    <input type="text" v-model="isbn" placeholder="Enter book isbn">
                </div>
                <button type="submit">Submit</button>
            </form>
        </div>
        ...
    </div>
</template>

<script>
module.exports = {
    data () {
        return {
            isbn: ''
            name: ''
            testArr:[]
        }
    },
    methods: {
        onSubmit: function() {
            let book = {isbn: this.isbn, name: this.name};
            this.$store.dispatch('addBook', book);
            // If I do `this.testArr.push(book);` it has expected behavior.
        }
    },
    computed: {
        books () {
            return this.$store.getters.books;
        }
    }
}

通过computedvuejs开发人员工具扩展提交表单数据后,我正在访问vuex商店的书,我看到了vuex以及组件的计算属性的变化。但是提交后,我看不到视图更新。知道我在这里缺少什么吗?

角色角色

问题出在computed酒店。它应该是:

computed: {
 books () {
   return this.$store.getters.books;
 }       
}

为方便起见,您可以使用vuex mapGetters

import { mapGetters } from 'vuex'

export default {
  //..
  computed: {
    ...mapGetters(['books'])
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

状态更改后功能组件不会重新呈现[React]

来自分类Dev

尽管使用setState(),状态更改后React组件也不会重新呈现

来自分类Dev

React组件不会在状态更改时重新呈现

来自分类Dev

组件不会在状态更改时重新呈现

来自分类Dev

状态更改后,react-redux组件未重新呈现

来自分类Dev

在 ANGULAR 中订阅中的数据数组更改后,组件 (AngularMatDataTable) 不会重新呈现?

来自分类Dev

ajax 请求更改状态后,react 组件不会重新加载

来自分类Dev

组件在减速器中的状态更改后不会重新渲染

来自分类Dev

提交EditForm后,组件不会重新呈现

来自分类Dev

功能组件在状态更改时重新呈现

来自分类Dev

React-redux组件不会在商店状态更改时重新呈现

来自分类Dev

通过其同级触发状态更改时,子组件不会重新呈现

来自分类Dev

React + Redux:组件不会在状态更改时重新呈现

来自分类Dev

同级组件不会在状态更改时重新呈现(使用useEffect,useState和Context)

来自分类Dev

更改 componentDidMount 中的状态后,React 组件不会更新

来自分类Dev

更改层次结构后如何保持状态并防止react组件重新呈现?

来自分类Dev

Vue 列表项不会在状态更改时重新呈现

来自分类Dev

状态更改后从子组件重新渲染

来自分类Dev

更改存储状态后重新渲染组件

来自分类Dev

使用useLocalStorage时,本地状态不会重新呈现组件

来自分类Dev

父状态更改后,组件不会更新

来自分类Dev

Vuex在组件中获取突变后的状态

来自分类Dev

状态更改时,react组件中的输入元素的值未重新呈现

来自分类Dev

当 redux 更改商店中的状态时,我的 reactJS 应用程序不会重新呈现

来自分类Dev

无法在vue组件中获取vuex状态

来自分类Dev

子组件在每个状态更改时都重新呈现

来自分类Dev

reactjs表示组件在redux状态更改时未重新呈现

来自分类Dev

反应不会在状态更改时重新呈现

来自分类Dev

React不会在状态更改时重新呈现

Related 相关文章

  1. 1

    状态更改后功能组件不会重新呈现[React]

  2. 2

    尽管使用setState(),状态更改后React组件也不会重新呈现

  3. 3

    React组件不会在状态更改时重新呈现

  4. 4

    组件不会在状态更改时重新呈现

  5. 5

    状态更改后,react-redux组件未重新呈现

  6. 6

    在 ANGULAR 中订阅中的数据数组更改后,组件 (AngularMatDataTable) 不会重新呈现?

  7. 7

    ajax 请求更改状态后,react 组件不会重新加载

  8. 8

    组件在减速器中的状态更改后不会重新渲染

  9. 9

    提交EditForm后,组件不会重新呈现

  10. 10

    功能组件在状态更改时重新呈现

  11. 11

    React-redux组件不会在商店状态更改时重新呈现

  12. 12

    通过其同级触发状态更改时,子组件不会重新呈现

  13. 13

    React + Redux:组件不会在状态更改时重新呈现

  14. 14

    同级组件不会在状态更改时重新呈现(使用useEffect,useState和Context)

  15. 15

    更改 componentDidMount 中的状态后,React 组件不会更新

  16. 16

    更改层次结构后如何保持状态并防止react组件重新呈现?

  17. 17

    Vue 列表项不会在状态更改时重新呈现

  18. 18

    状态更改后从子组件重新渲染

  19. 19

    更改存储状态后重新渲染组件

  20. 20

    使用useLocalStorage时,本地状态不会重新呈现组件

  21. 21

    父状态更改后,组件不会更新

  22. 22

    Vuex在组件中获取突变后的状态

  23. 23

    状态更改时,react组件中的输入元素的值未重新呈现

  24. 24

    当 redux 更改商店中的状态时,我的 reactJS 应用程序不会重新呈现

  25. 25

    无法在vue组件中获取vuex状态

  26. 26

    子组件在每个状态更改时都重新呈现

  27. 27

    reactjs表示组件在redux状态更改时未重新呈现

  28. 28

    反应不会在状态更改时重新呈现

  29. 29

    React不会在状态更改时重新呈现

热门标签

归档