For React application add the Adobe Launch script in the head of your html file, index.html I guess.
Adobe Launch will then load and you can use it in the same way as you would do with default implementation.
Some restriction are that page bottom is not really useful anymore unless it is something for first load of page and you are not even sure that it will be fired after the React content is available. Page top is only useful on first run.
You should implement a data layer on the page and it needs to contain an array on which you can evaluate if new event was pushed.
React also uses routes that do not reload the page so you need to figure out a way to know route changed, so you can use the data layer approach or one of this one that is listed in this answer: Re: Blazor Server - Adobe Experience League Community - 428045 . I know it is about Blazor Server the thread but my answer is based on experience that I have with React Apps.
Hope this helps.