arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

React Element Factories and JSX Warning

You probably came here because your code is calling your component as a plain function call. This is now deprecated:

var MyComponent = require("MyComponent");

function render() {
  return MyComponent({ foo: "bar" }); // WARNING
}

hashtag
JSX

React components can no longer be called directly like this. Instead you can use JSX.

hashtag
Without JSX

If you don't want to, or can't use JSX, then you'll need to wrap your component in a factory before calling it:

This is an easy upgrade path if you have a lot of existing function calls.

hashtag
Dynamic components without JSX

If you get a component class from a dynamic source, then it might be unnecessary to create a factory that you immediately invoke. Instead you can just create your element inline:

hashtag
In Depth

var React = require("react");
var MyComponent = require("MyComponent");

function render() {
  return <MyComponent foo="bar" />;
}
var React = require("react");
var MyComponent = React.createFactory(require("MyComponent"));

function render() {
  return MyComponent({ foo: "bar" });
}
Read more about WHY we're making this change.arrow-up-right
var React = require("react");

function render(MyComponent) {
  return React.createElement(MyComponent, { foo: "bar" });
}