We have an excellent blog by Hem Kant, MVP 2019 our award winner from Content Bloom looking at PCA with REACT in SDL Tridion Sites 9.
The blog is in two parts which cover:
Part 1: Read more about creating an app using Apollo Client to communicate with SDL Tridion GraphQL API. Build a new schema, Dynamic CT and published 3 components using the Dynamic CT and retrieve them via PCA (GraphQL).
Part 2: Read about building Details page using the code from Part 1 blog used to render a list of Dynamic News Components on the Landing page. The blogs also covers the deployment process and how to deploy ReactJs App.
Worth a read when you have five minutes!