Search code examples
javascriptreactjstypescriptcreate-react-app

Integrate React app created with create-react-app into an external application


I'm using create-react-app-typescript to create a react application. What I'm trying to do is to build the application, then include the resulting js and CSS files into another application (which is a very old application that doesn't know anything about React or any new JavaScript features)

My problem: I want to be able to pass information to my React application; for example, I want to specify an array to be used to display information, but the issue is that as soon as I add a <script> tag to React's js file, it will try to create the application under the target div element.

Not sure if it's a good idea, but I try to avoid ejecting my React application as much as possible so that I wouldn't need to maintain everything myself.

One solution that I thought of was to create an item in localStorage and then read it from my React app, and this somehow solves the issue, but is this a good way to do it?

And then there's another issue: I want to be able to pass a callback from the external application to be called from my React app to cause something to happen in my external application, and this cannot be done using localStorage

Any help or tip is deeply appreciated, Thank you


Solution

  • You don't have to eject the project at all. One possible solution (maybe not the best) is just to change your index.js to expose your application. Thus instead of directly "rendering" the app do something like following

    // needed imports
    
    window.startFromOutside = function(element, callback) {
      ReactDOM.render(<ReactApp cb={callback} />, element)
    }
    

    That way you can bootstrap your react application from outside passing any properties you want.