const useRequest2 = url => {
 const [state, dispatch] = React.useReducer(reducer, {
    url,
    defaultUrl: url,
    responseData: null,
    isFetching: true,
    error: null
  });

 if (url !== state.defaultUrl) {
    dispatch({ type: "update url", payload: url });
  }

 React.useEffect(() => {
   …(fetch data);
 }, [state.url]);

 const update = React.useCallback(
   url => {
     dispatch({ type: "update url manually", payload: url });
   },
   [dispatch]
 );

 return [state, update];
};