【发布时间】:2019-09-03 07:12:18
【问题描述】:
我尝试在初始状态下加载一些 axios json 结果,以便以预填充状态打开我的应用程序,但我无法在初始状态下加载 axios 结果,我可以在控制台上看到它,但是return 在这里不起作用
这是我的reducer的代码
import axios from "axios";
const getBookings = () => {
return new Promise((resolve) => {
axios.get('http://localhost:4000/bookings.json')
.then(res => resolve(res.data))
});
}
const getInitiatState = getBookings().then(
function(data)
{
console.log(data)
const initialState = {
data: data, // ' ' or axios result
};
return initialState;
}
)
function bookings(state = getInitiatState, action)
{
switch(action.type)
{
default:
return state
}
}
export default bookings;
【问题讨论】:
-
您应该将其设为空数组/对象,并稍后通过适当的操作“初始化”状态。
-
法德所说的。我通常在组件确实安装在应用程序的索引上或在您的应用程序早期的某个地方执行此步骤。
-
另外问题是你实际上是在最初将承诺添加到状态中。你最终会看到数据,但是在 Promise 对象被添加到你的初始状态之后。记住 JS 是同步的,但 AJAX 是异步的。 Javascript 不会等待 ajax 完成(如果 async await 可以工作,可能是一种暗示?)