Vuex Store 中的分页

Posted

技术标签:

【中文标题】Vuex Store 中的分页【英文标题】:Pagination in Vuex Store 【发布时间】:2020-01-19 03:46:04 【问题描述】:

我从https://github.com/vueschool/learn-vuex 克隆了这个很棒的购物车回购,我得到这样的数据:

ProductList.vue

<template>
    <div>
<ul>
        <li v-for="product in products">
           - product.name - product.price
        </li>
      </ul>
</div>
</template>

<script>
methods: 
      ...mapActions(
        fetchProducts: 'products/fetchProducts'
      )
    
</script>

export default new Vuex.Store(
    state: 
        products: ,
    ,
    actions: 
    fetchProducts(commit,data) 
            axios.get(`api/product`).then((response) => 
            commit('updateProducts', response.data);
        )
    ,
    mutations: 
        updateProducts (state, products) 
            state.products = products
        
    
);

我正在尝试对结果进行分页,需要这方面的帮助,我是否需要在 vuex 商店中创建分页状态或新模块,提前致谢。

【问题讨论】:

我认为你不需要一个新的分页模块,你可以通过方法操作中的数据属性发送分页数据,比如totalPage和currentPage 显示一些代码? 【参考方案1】:

尝试关注

我使用RenderlessLaravelVuePagination 组件之一进行分页。

<pagination :data="products" @pagination-change-page="getProducts"></pagination>

剩下的代码在下面

export default 
  name: 'ProductList',
  mounted() 
    this.getProducts();
  ,
  methods: 
    getProducts(page = 1)
      this.$store.dispatch('getProducts',
        page: page
    );
  ,

希望这对你有用。

【讨论】:

我从 vuex 中取出数据,我不习惯将所有数据存储在 vuex 中,因为它会随着时间的推移而变大。我将在没有 vuex 的情况下使用您的解决方案。谢谢。 @LDUBBS 您可以随着时间的推移创建单独的文件和模型。主要优势是单一数据源。 再试一次,迈克,我仍然无法将您的解决方案应用于映射的状态和操作。 请在此处发布您的代码,您是使用pagination 的任何插件还是自己做?同时发布您的控制器代码。 把它移到这里***.com/questions/58106049/…【参考方案2】:

您需要定义元对象以存储从您的 axio 帖子返回的元数据。然后,您可以在您的 vue 中使用该元对象。

做这样的事情:

export default new Vuex.Store(
    state: 
        products: ,
        productsMeta: 

    ,
    actions: 
        getProducts(commit,data) 
            axios.get(`api/product`).then(response => 
            this.productsMeta = response.meta;
            ).commit('updateProducts', response.data);
        )
    ,
    mutations: 
        updateProducts (state, products) 
            state.products = products
        
    
);

【讨论】:

这也可以,但是当我将产品添加到购物车时会发生一些奇怪的事情。仅添加第一项。

以上是关于Vuex Store 中的分页的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollview 分页中的 UITextview

ExtJS 4.1 中的分页问题

摆脱报告中的分页符

如何避免报表中的分页:创建没有分页符的报表?

Angular 5中的分页索引号

在使用 graphql 缓存的基于游标的分页中跟踪页码