I don't think the React Router API affords this.
Code splitting is orthogonal to module loading, i.e. it can happen correctly without having achieved the behavior of: loading modules only once routed to.
Suspense can be placed anywhere above, and it must be by the time we ask a question like this as the application will fault without it.
When you write <A /> and <B /> in this parent component's rendering, as you have, as the Route element prop values, this causes the lazy module loading to happen then, during App render for any route, as these expressions are renderings of A and B.
If the React-Router API permitted lazy loading, it would let you defer rendering the routed-to component until that route is selected.
The typical way any value's computation is deferred in EcmaScript is by creating a function that returns the result. For example, in some other imaginary Router API, one might be permitted to write instead () => <A /> and () => <B />.
If at the basic level we end up with, internal to the imaginary Router library, const SelectedRoute: React.FC = () => <A />, then the lazy load of the A module would commence only once render arrives at <SelectedRoute />.
Thank you for reading.