Javascript React Redux Axios-可以访问道具,然后不定义道具
概述:我通过Axios发出GET请求(在本例中是一个模拟适配器),并让它通过分派更新我的存储。只要路径为“/posts/*”,模拟适配器就会发回相同的响应 奇怪的是,它实际上显示了来自模拟API的道具(持续1秒),但随后转到“道具未定义”(即无法读取未定义的属性“title”) 当我记录this.props时,它显示这些道具确实存在。所以我不认为有什么东西把它们改回了null 这里是axios部分,我目前将其放在middleware.js中的apiMiddleware函数中Javascript React Redux Axios-可以访问道具,然后不定义道具,javascript,reactjs,redux,axios,Javascript,Reactjs,Redux,Axios,概述:我通过Axios发出GET请求(在本例中是一个模拟适配器),并让它通过分派更新我的存储。只要路径为“/posts/*”,模拟适配器就会发回相同的响应 奇怪的是,它实际上显示了来自模拟API的道具(持续1秒),但随后转到“道具未定义”(即无法读取未定义的属性“title”) 当我记录this.props时,它显示这些道具确实存在。所以我不认为有什么东西把它们改回了null 这里是axios部分,我目前将其放在middleware.js中的apiMiddleware函数中 di
dispatch({ type: 'GET_POST_AXIOS' });
let { postID } = action.payload;
mock.onGet(API_BASE + "/posts/" + postID).reply(200, {
post:
{ id: 1,
title: 'Test Title',
description: 'Test Description',
media: { medium_url: "http://test.com/test.jpg" }
}
});
axios({
url: API_BASE + "/posts/" + postID,
timeout: 20000,
method: 'get',
responseType: 'json'
})
.then(function(response) {
dispatch({ type: 'SERVE_POST_AXIOS', response: response.data });
})
这是减速器部分
case 'SERVE_POST_AXIOS':
return Object.assign({}, state, { post_axios: response.post })
这是我的mapDispatchToProps中呈现文章的组件。match.params来自react路由器的BrowserRouter
loadFromAxios(cb) {
console.log("Load from Axios called..");
dispatch({ type: 'API', payload: { success: 'GET_POST_AXIOS', postID: ownProps.match.params.postID } });
cb();
}
我通过修改我的条件解决了这个问题,这在本质上是错误的
this.state.loading ?
<div>Loading</div>
:
<div>Info here with props</div>
为什么这不起作用
this.props.post ?
<div>Info here with props</div>
:
<div>Loading</div>
componentDidMount() {
this.props.loadFromAxios( () => this.setState({ loading: false }) );
}