title: Should I use one or several action types to represent this async action?
body: <p>I'm building a front-end for a search system where almost all user actions need to trigger the same async action to re-fetch search results. For example, if a user enters a keyword, then we need to fetch <code>/api/search?q=foo</code>, and if they later select a category we fetch <code>/api/search?q=foo&amp;categoryId=bar</code>. I originally had separate action types for <code>FETCH_RESULTS</code>, <code>SELECT_CATEGORY</code>, <code>DESELECT_CATEGORY</code>, etc. I created one asynchronous action creator for <code>FETCH_RESULTS</code>, but the others are synchronous. The more I think about it, they all end up needing to re-fetching the results from the backend and update the app state based on the response from the backend.</p>
  
  <p>Would it make sense for me to use the single async action-creator for any change? Or would it be better to use async action creators for each distinct user action (selecting a keyword, category, or filter)?</p>
  
  <p>I think the advantage of granular actions would be the events more accurately reflect what the user did (e.g. the user selected a category) vs having to peer into the payload to figure out what actually changed, but they are all pretty similar.</p>