Opening the book…
A component that fetches, transforms, caches, and renders is four responsibilities in one file — and each one makes the others harder to test and reuse.
If a method in a .razor file does not touch rendering, it belongs in an injected service. The component keeps parameters, UI state, and event plumbing; everything else moves out.
Tiny leaf components can inline trivial logic — extracting a one-liner is ceremony, not architecture.