diff --git a/src/createHashStateHistory.js b/src/createHashStateHistory.js
index <HASH>..<HASH> 100644
--- a/src/createHashStateHistory.js
+++ b/src/createHashStateHistory.js
@@ -300,7 +300,7 @@ const createHashStateHistory = (props = {}) => {
     listenerCount += delta;
     const eventType = canUseHistory ? PopStateEvent : HashChangeEvent;
 
-    if (listenerCount === 1) {
+    if (listenerCount === 1 && delta === 1) {
       window.addEventListener(eventType, handleHashChange);
     } else if (listenerCount === 0) {
       window.removeEventListener(eventType, handleHashChange);
fix: duplicate listeners

<I>d<I> commit on upstream ReactTraining/history