vuex 的奇怪 console.log 输出
strange console.log output with vuex
我有一些简单的 vuex 商店
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 突变之前填充了待办事项?
当我写作时
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)
}
}
输出正常,状态为空待办事项
那是因为您会在控制台日志旁边看到一个蓝色的小三角形。我不知道它的技术术语,但发生的是浏览器将用当前值更新该变量,因为它是一个反应变量,并且由于它是指向内存中某个位置的引用,它会更新。
如果你真的希望看到价值并证明上面描述的内容,你可以写:
console.log(JSON.parse(JSON.stringify(this.state.todos)));
我有一些简单的 vuex 商店
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 突变之前填充了待办事项?
当我写作时
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)
}
}
输出正常,状态为空待办事项
那是因为您会在控制台日志旁边看到一个蓝色的小三角形。我不知道它的技术术语,但发生的是浏览器将用当前值更新该变量,因为它是一个反应变量,并且由于它是指向内存中某个位置的引用,它会更新。
如果你真的希望看到价值并证明上面描述的内容,你可以写:
console.log(JSON.parse(JSON.stringify(this.state.todos)));