Where to place logic for loading initial server da

2020-04-05 09:37发布

问题:

I am using React-Redux to build an application.

To load initial data for a React smart component, I need to dispatch a Redux action where the server data requests will happen.

I've tried dispatching the action in constructor (ES6 implementation), componentWillMount, and componenetDidMount. They all worked.


My question is:

is there a recommended place in the React smart component that the action should be dispatched.

回答1:

Edit: Dan Abramov recently stated

In future versions of React we expect that componentWillMount will fire more than once in some cases, so you should use componentDidMount for network requests.


In componentDidMount

Read here.

Fetch data in componentDidMount. When the response arrives, store the data in state, triggering a render to update your UI.

When fetching data asynchronously, use componentWillUnmount to cancel any outstanding requests before the component is unmounted.

Documentation is really scarce on "why in componentDidMount". I believe componentWillMount is not called if you use server-side render, so this could be a reason why componentDidMount is preferred.



回答2:

The recommended way is, I believe, to do it in componentDidMount. See this for more info.