何时应该在redux中调度异步操作?

时间:2016-04-19 13:07:28

标签: javascript reactjs redux

在不同的redux指南中,我看到了调度api动作的不同方法 例如,在redux-reddit app中,异步操作在componentDidMount函数中调度:

class AsyncApp extends Component {
  constructor(props) {
    super(props)
    this.handleChange = this.handleChange.bind(this)
    this.handleRefreshClick = this.handleRefreshClick.bind(this)
  }

  componentDidMount() {
    const { dispatch, selectedSubreddit } = this.props
    dispatch(fetchPostsIfNeeded(selectedSubreddit))
  }
  ...

在现实世界中,异步操作是在componentWillMount函数中调度:

function loadData(props) {
  const { login } = props
  props.loadUser(login, [ 'name' ])
  props.loadStarred(login)
}

class UserPage extends Component {
  constructor(props) {
    super(props)
    this.renderRepo = this.renderRepo.bind(this)
    this.handleLoadMoreClick = this.handleLoadMoreClick.bind(this)
  }

  componentWillMount() {
    loadData(this.props)
  }

那么,调度异步操作的正确方法是什么?或者它并不重要?另外,据我所知,在es6类componentWillMount中,函数被构造函数替换。

1 个答案:

答案 0 :(得分:1)

如果要构建同构应用程序(客户端和服务器呈现),则倾向于使用componentDidMount,因为您只想从客户端发出ajax调用,componentDidMount仅在客户端上运行。