1 javascript reactjs redux axios
在我的React/redux/axios应用程序中,我创建了这样的商店:
import eventsData from '../api/event';
console.log(eventsData);
const events = [];
Object.assign(events, eventsData);
const defaultState = {
events
}
export const store = createStore(rootReducer, defaultState);
Run Code Online (Sandbox Code Playgroud)
这工作正常,我的事件通过映射在我的组件中进行监听
{events.map((event, i) => <CalenderItem key={i} i={i} event={event} {...this.props}/>)}
Run Code Online (Sandbox Code Playgroud)
但是,当我通过axios从JSON导入数据时,商店会获取数据,但事件未列出.导入和存储创建看起来像这样:
const events = [];
axios.get("http://#######/src/api/event")
.then(result => {
console.log(result.data.events);
return Object.assign(events, result.data.events);
});
const defaultState = {
events
}
export const store = createStore(rootReducer, defaultState);
Run Code Online (Sandbox Code Playgroud)
这很有趣,因为这console.log两个数据看起来都一样.
小智 7
您正在使用异步函数(axios.get),然后立即期望以下代码行中的结果.要正确执行此操作,您需要请求数据,然后执行a action以将数据减少到存储中.
const events = [];
const defaultState = {
events
}
export const store = createStore(rootReducer, defaultState);
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序的另一部分,以下内容:
axios.get("http://#######/src/api/event").then( data => {
dispatch({ type: "RECEIVED_DATA", action: { data }})
});
Run Code Online (Sandbox Code Playgroud)
然后在你的reducer中:
switch ( action, state ) {
case "RECEIVED_DATA"
return Object.assign({}, state, action.data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |