我将“用户和地点”作为两个不同的数据库,每个用户都可以放置这些数据库。
我有BasicInfo
个组件,用户必须加载一个地方。
ComponentWillMount
的 BasicInfo
componentWillMount() {
this.props.dispatch(fetchUser())
this.props.dispatch(fetchPlaces(1))
}
我需要在fetchPlaces
中传递用户ID,截至目前我是硬编码,但如何处理fetchUser的结果?我应该在componentWillReceiveProps(nextProps)
吗?或者还有其他方法吗?
componenetWillReceiveProps
是有道理的,但我想知道如果它是一系列事件呢?如果我必须获取其他一些数据,可能取决于地点ID。
行动:
export function fetchPlaces(user_id) {
return function(dispatch) {
axios.get("/getPlaces?user_id=" + user_id)
.then((response) => {
console.log(response);
dispatch({type: "FETCH_PLACES_FULFILLED", payload: response.data})
})
.catch((err) => {
dispatch({type: "FETCH_PLACES_REJECTED", payload: err})
})
}
}
export function fetchPlace(place_id) {
return function(dispatch) {
axios.get("/getPlace?place_id=" + place_id)
.then((response) => {
console.log(response);
dispatch({type: "FETCH_PLACES_FULFILLED", payload: response.data})
})
.catch((err) => {
dispatch({type: "FETCH_PLACES_REJECTED", payload: err})
})
}
}

答案 0 :(得分:1)
您可以使用thunk或promise中间件。您可以在documentation中找到动机和示例。
答案 1 :(得分:1)
您好像已经在使用redux-thunk
了吗?如果是这样,您可以从axios.get()调用中返回promise:
return axios.get(...);
...然后你可以做这样的事情(我猜测你的fetchUser
和user
会是什么样子):
this.props.dispatch(fetchUser()).then(user => this.props.dispatch(fetchPlaces(user.id)))