Unidirectional data flow means data in a Redux app always moves around one loop, in the same direction. Components never change the state directly. They can only send actions into the loop.
The UI renders from the current state in the store.
An event, like a click, makes the app dispatch an action.
The store runs the reducer with the current state and the action, and saves the new state it returns.
The store notifies its subscribers, and components whose selected data changed re-render with the new state.
Because every change takes this one path, you can trace any state change back to the action that caused it. That makes bugs easier to find and the app easier to reason about.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.