Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React component function returning JSX causes error when used in render method of ES6 class React component

I have a function that returns JSX as shown below:

  function struct(locals) { 
    return (
      <View style={fieldsetStyle}>
        {label}
        {error}
        {rows}
      </View>
    );
}
label, error, and rows are functions that also return JSX.

I call this function within the render method of an ES6 class component

class Component extends React.Component {
  render() {
    const locals = this.getLocals();

    return struct(locals); 
  }
}

When I run the code, I get error

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of Struct

How can I get the result from struct function to render as return value of Component class render?

like image 404
Tom Athens Avatar asked Jul 29 '26 03:07

Tom Athens


1 Answers

You are returning a react component, not a react element. The difference is an element describes how to create the component, where as the component is the instanced class. You need to return React.createElement(Struct);, or return <Struct/>. Also, your locals variable will actually be a props object. So your code should look like this:

function struct({locals}) { 
    return (
      <View style={fieldsetStyle}>
        {label}
        {error}
        {rows}
      </View>
    );
}

class Component extends React.Component {
  render() {
    const locals = this.getLocals();

    return <Struct locals={locals}/>; 
  }
}
like image 95
Kyle Avatar answered Jul 31 '26 17:07

Kyle



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!