0

Is there a way in React to just refresh a component not the window but the component itself? This is so I can re-trigger a react-query. I know I can use useEffect() but what would be the way to do it?

So I know I could do, something like:

useEffect(() => {
     setFetchData(result);
}, [result]);

This would trigger the component to re-render when result changes. But how can you have a button that would manually refresh the component or re-render it.

1

2 Answers 2

1

You can do it like this:

const [reload, setReload] = useState()
useEffect(() => {
     // Add your code here
}, [reload]);

return (
 <button onClick={() => setReload(!reload)} >Reload</button>
);

And anytime you click the button it will execute the code inside the useEffect and update the component.

Sign up to request clarification or add additional context in comments.

Comments

0

If you are trying to refresh the component just to re-trigger a query from react-query, you'd better use refetch function provided by useQuery hook.

const { data, refetch, ... } = useQuery(...);

return (
  <>
    {(data?.yourQuery?.results || []).map(result => ...)}
    <button onClick={refetch}>Refetch!</button>
  </>
)

If there are some changes of data after calling refetch, the component will be automatically rerendered.

10 Comments

Is there a way though to show the loading state as apposed to the 'Updating' state
Refetch function does refetch query but how could I refresh the component based on that?
useQuery also provides isLoading and isRefetching boolean states, so you can conditionally render loading components using them. Referring to this docs will help you understand how this hook works.
After you refetch the query, there will be (or not, sometimes...) updates of data. Then you show results of the query inside your component using data. Because data is updated, so is the component. It will be re-rendered automatically.
I have created an example here: stackblitz.com/edit/react-ts-jfq8ve?file=index.tsx I want it so the query goes into the loading state not updating state when the button is clicked
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.