在不同的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
中,函数被构造函数替换。
答案 0 :(得分:1)
如果要构建同构应用程序(客户端和服务器呈现),则倾向于使用componentDidMount
,因为您只想从客户端发出ajax调用,componentDidMount
仅在客户端上运行。