Suppose, you need to pass data in between such components that don't have any relationship (parent-child), so while making communication between such components, it is difficult to pass data and maintaining them is also a very difficult task.
Solution:
There are three possible solution to solve this probelm.
Redux
Context API
Hookes - useContext + useReducer
In such a case redux is very useful because Redux eliminates the need to continuously pass data from one component to another component.
If you are using redux with react, states will no longer need to be lifted up
Everything is handled by Redux itself.
Redux provides a way to centralize the state of your application.