正确的获取数据的方法 - React

时间:2017-01-06 17:03:19

标签: javascript reactjs

我将“用户和地点”作为两个不同的数据库,每个用户都可以放置这些数据库。

我有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})
      })
  }
}




2 个答案:

答案 0 :(得分:1)

您可以使用thunk或promise中间件。您可以在documentation中找到动机和示例。

答案 1 :(得分:1)

您好像已经在使用redux-thunk了吗?如果是这样,您可以从axios.get()调用中返回promise:

return axios.get(...);

...然后你可以做这样的事情(我猜测你的fetchUseruser会是什么样子):

this.props.dispatch(fetchUser()).then(user => this.props.dispatch(fetchPlaces(user.id)))