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
163 views
in Technique[技术] by (71.8m points)

reactjs - How to update state when routing

I have the following button.

const [search, setSearch] = useState(false);
<Button component={RouterLink}
        to="/cr-journey"
        onClick={() => setSearch(true)}
        fullWidth>Search
    </Button>

I would like to update the state when the button is click. Probably because the button will route to a different component then the state will not be updated.

const xxx = useCallback(() => { dispatch(journeyAction.journeyFilterData(search));}, [dispatch,search]);
useEffect(() => { xxx() });

How can I make sure useEffect will update the state when clicking the button?

Thank you

question from:https://stackoverflow.com/questions/65835245/how-to-update-state-when-routing

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

1 Reply

0 votes
by (71.8m points)

When route changes basically component unmounts.And you cannot control local state of unmounted component.

But you can update redux state when component unmounts.

useEffect(() => {

   return () => // your dispatch function  

}, []);

But if component does not unmount just paste update function in useEffect without return keyword.

 useEffect(() => {

      dispatch(someFunc()); // when search updates this will be call
    
 }, [search]);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
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

...