【发布时间】:2022-01-05 08:15:39
【问题描述】:
-
我正在尝试在状态中填充变量
onSale但无法填充。 我从 json 文件中获取数据。我的代码有什么问题? -
一个单独的问题是有时我看到“上下文”这个词而不是“状态”,需要什么以及何时使用它?
感谢您的帮助。
state: {
products: [],
onSale: [],
},
actions: {
async fetchProducts({commit, state}) {
axios.get('/src/assets/phones.json')
.then(response => {
commit('setProducts', response.data) // setProducts(state, products) {
// alert(response.data)
})
let allM = []
await state.products.map((d) => {
for (let i = 0; i < Object.keys(d).length; i++) {
if (d["onSale"])
allM.push(d["onSale"])
}
})
//alert(allM)
//return new Promise((resolve, reject) => {
commit('setOnSale1', allM)
// alert(allM)
})
},
mutations: {
setOnSale1(state, onSale) {
state.onSale = onSale
},
},
【问题讨论】:
-
问题在 1 中缺乏明确的问题陈述。究竟什么不起作用?有错误吗?问题可能与 2 有关,也可能与其他问题有关。
context是具有state的对象,还有您在操作、突变等中需要的其他东西 -commit、dispatch等,否则您无法访问它们。第一个参数是context,而不是state。如果只是调用它state,它将无法正常工作 -
感谢 Estus Flask,我无法在状态下填充 onSale 数组,我尝试从操作中执行此操作,但在尝试提醒它时得到空响应。
-
应该是
setOnSale1({ state }或setOnSale1(context。还有其他问题,promise 需要直截了当和正确。您尝试使用new Promise(此处不正确)和then(不建议使用async/await)意味着它们需要特别注意。至少应该是await axios.get...。