Giter VIP home page Giter VIP logo

Comments (10)

jamiebuilds avatar jamiebuilds commented on April 30, 2024

Oh man, I have no idea how to do this that isn't going to cause a mess of other problems.

from babel-plugin-react-transform.

gaearon avatar gaearon commented on April 30, 2024

What kind of problems? This is exactly how React Hot Loader currently works, and it's pretty stable.

from babel-plugin-react-transform.

jamiebuilds avatar jamiebuilds commented on April 30, 2024

You'll have to explain how it works, I would check the tests in the react-hot-loader repo but you don't have any... :for_shame:

from babel-plugin-react-transform.

jedwards1211 avatar jedwards1211 commented on April 30, 2024

@thejameskyle it's just a development tool dude, not for production

from babel-plugin-react-transform.

jamiebuilds avatar jamiebuilds commented on April 30, 2024

I understand that dude, development tools need tests too.

from babel-plugin-react-transform.

gaearon avatar gaearon commented on April 30, 2024

Actually that's exactly why this project was started. It was easier to split RHL into several different projects than to write tests for it :-) RHL just enumerated every key in module.exports and wrapped whatever looks like a React component. This is what I suggest to do here: wrap every export into a conservative runtime check. The wrapping function would be like

let wrappedComponents = [];

wrapExport(something) {
  if (
    something &&
    something.prototype &&
    something.prototype.isReactComponent && // only finds Component descendants but good enough
    wrappedComponents.indexOf(something) === -1 // don't wrap twice
  ) {
    wrappedComponent.push(something); // normal generated code would also need to do that 
    return wrapJustLikeWeWrapInGeneratedCode(something);
  }
  return something; // not an export we should hijack
}

Then every export would go through this wrapper, regardless of what's in there.
Does it make sense?

This is a runtime check but it's important for many cases where we want export a React class generated by some factory in another file, and it's essential to maintain its identity.

from babel-plugin-react-transform.

solomon-gumball avatar solomon-gumball commented on April 30, 2024

+1 Would like to see this.

I am actually working on a backbone/react application and using the react-hmre preset. This is causing react-proxy to run on our backbone views which is an issue!

from babel-plugin-react-transform.

gaearon avatar gaearon commented on April 30, 2024

Interesting, can you show code that fails? In s separate issue.

from babel-plugin-react-transform.

solomon-gumball avatar solomon-gumball commented on April 30, 2024

@gaearon will do.

from babel-plugin-react-transform.

gaearon avatar gaearon commented on April 30, 2024

This is fixed in React Hot Loader 3.
It is built with lessons learned from both React Hot Loader and React Transform.

Iā€™m closing the issue as unsolvable in this repo.

from babel-plugin-react-transform.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.