Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js VUE:通过computed MapGetter()在data()节中访问状态变量时未定义_Vue.js_Vuejs2_Vuex - Fatal编程技术网

Vue.js VUE:通过computed MapGetter()在data()节中访问状态变量时未定义

Vue.js VUE:通过computed MapGetter()在data()节中访问状态变量时未定义,vue.js,vuejs2,vuex,Vue.js,Vuejs2,Vuex,在我的解决方案中,我已经成功地使用了很多…MapGetter,但是现在我需要在data()部分直接访问变量,似乎在访问变量时该变量还没有设置/准备好 MapGetter位于computed:{}部分 调试时,我注意到data()在computed:之前运行,所以。。我需要把手表放在这里吗 代码: data(){ return { FiltersVisible: false, orderList: {

在我的解决方案中,我已经成功地使用了很多…MapGetter,但是现在我需要在data()部分直接访问变量,似乎在访问变量时该变量还没有设置/准备好

MapGetter位于computed:{}部分

调试时,我注意到data()在computed:之前运行,所以。。我需要把手表放在这里吗

代码:

data(){
        return {
            FiltersVisible: false,
            orderList: {
                currentPage: 1,
                totalPages: ordersCount / 20,
                // totalPages:80,
                itemsPerPage: 20
            }
        }
    },
    computed: {
        ...mapGetters(['orders', 'ordersCount'])
        // ...mapGetters(['orders'])
    },
Vue状态(Chrome)的屏幕截图

请注意,getter已正确初始化


解决这个问题的方法有很多。您可以创建一个Vuex getter,它为您提供一个空值或默认值。这将至少确保没有错误,并且在您的商店启动时更新

您可以创建一个本地计算属性,并使用
mapGetter
获取存储值,这样您还可以提供一个默认值

您可以将
totalPages
设置为0,并在存储值更改时使用观察程序更新值


这真的取决于上下文。例如,如果其他检索值的组件需要相同的默认回退,Vuex getter将非常有用。

有很多方法可以解决这个问题。您可以创建一个Vuex getter,它为您提供一个空值或默认值。这将至少确保没有错误,并且在您的商店启动时更新

您可以创建一个本地计算属性,并使用
mapGetter
获取存储值,这样您还可以提供一个默认值

您可以将
totalPages
设置为0,并在存储值更改时使用观察程序更新值


这真的取决于上下文。例如,如果您需要为其他检索该值的组件提供相同的默认回退,Vuex getter将非常有用。

感谢您花时间回答@Stephan-v:)。。你有没有可能(通过代码)告诉我你会怎么做?又称作最简单的:)谢谢你花时间回答@Stephan-v:)。。你有没有可能(通过代码)告诉我你会怎么做?又称作最简单的:)你解决你的问题了吗@Terjeyeah是的:)那是很久以前的事了,所以我不记得解决方案是什么:)你解决了你的问题吗@Terjeyeah是的:)那是很久以前的事了,所以我不记得解决方案是什么:)