首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vuex的奇怪console.log输出

问vuex的奇怪console.log输出
EN

Stack Overflow用户
提问于 2021-08-13 15:32:04
回答 1查看 17关注 0票数 0

我有一些简单的vuex商店

代码语言:javascript
复制
const state = {
    todos : []
}

const getters = {
    allTodos: (state) => state.todos
}

const actions = {
     async fetchTodos({ commit }) {
        console.log(this.state.todos)
        if(state.todos.length == 0) {
                const response = await axios.get('https://jsonplaceholder.typicode.com/todos?_limit=5')
                commit('setTodos', response.data)
        }         
    }
}

const mutations = {
    setTodos(state, todos) {
        state.todos = todos
    }
}

为什么fetchTodos操作输出中的console.log在填充axios.get和setTodos突变之前填充了待办事项?

当我写的时候

代码语言:javascript
复制
const actions = {
     fetchTodos({ commit }) {
        console.log(this.state.todos)
        setTimeout(async () => {
            if(state.todos.length == 0) {
                const response = await axios.get('https://jsonplaceholder.typicode.com/todos?_limit=5')
                commit('setTodos', response.data)
            }
        }, 10000)    
    }
}

输出正常,状态为空的待办事项

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-13 15:38:37

这是因为您将在控制台日志旁边看到一个蓝色小三角形。我不知道它的技术术语,但发生的是浏览器将使用当前值更新该变量,因为它是一个反应性变量,并且由于它是指向内存中某个位置的引用,因此它将更新。

如果你真的希望看到它的价值并证明上面描述的,你可以这样写:

代码语言:javascript
复制
console.log(JSON.parse(JSON.stringify(this.state.todos)));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68774950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档