Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
417 views
in Technique[技术] by (71.8m points)

javascript - How to know if the URL has changed forward or backward in react(history)?

I want to know if my components(more than 10 such components) are loaded via forward url/normal mount by click on button or by back(history.goback()) to add a CSS class(Different class required on forward and backward respectively). I have wrapped my components in a custom component , where i'm doing below :

const [ locationKeys, setLocationKeys ] = useState([])
const history = useHistory()

useEffect(() => {
  return history.listen(location => {
    if (history.action === 'PUSH') {
      setLocationKeys([ location.key ])
    }

    if (history.action === 'POP') {
      if (locationKeys[1] === location.key) {
        

        // Handle forward

      } else {
        

        // Handle backwards

      }
    }
  })
}, [ locationKeys, ])

But, my listener doesn't get called on url change. Any idea why or how do i achieve it ?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Just use useLocation:

const { action } = useHistory();
const { pathname } = useLocation();
useEffect(() => {
  // do something
}, [action, pathname]);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...