Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null [closed]
I had same problem in the render() method. The problem comes when you return from render() as :
render() {
return
(
<div>Here comes JSX !</div>
);
}
i.e. if you start the parenthesis in a new line
Try using:
render() {
return (
<div>Here comes JSX !</div>
);
}
This will solve the error
Given that you are using a stateless component as a arrow function the content needs to get in parenthesis "()" instead of brackets "{}" and you have to remove the return function.
const Search_Bar= () => (
<input />;
);
the problem is in the return, try this:
return(
);
this solved my problem
This error can be seen for a number of reasons:
- As mentioned above, starting the parenthesis on a new line.
Error:
render() {
return
(
<div>I am demo data</div>
)
}
Correct way to implement render
:
render() {
return (
<div>I am demo html</div>
);
}
In the above example, the semicolon at the end of the return
statement will not make any difference.
- It can also be caused due to the wrong brackets used in the routing:
Error:
export default () => {
<BrowserRouter>
<Switch>
<Route exact path='/' component={ DemoComponent } />
</Switch>
</BrowserRouter>
}
Correct way:
export default () => (
<BrowserRouter>
<Switch>
<Route exact path='/' component={ DemoComponent } />
</Switch>
</BrowserRouter>
)
In the error example, we have used curly braces but we have to use round brackets instead. This also gives the same error.
I ran into this error when running Jest tests. One of the components was being mocked in the setup file, so when I attempted to use the actual component in a test, I was getting very unexpected results.
jest.mock("components/MyComponent", () => ({ children }) => children);
Removing this mock (which wasn't actually needed) fixed my issue immediately.
Perhaps this will save you a few hours of research when you know you're returning from your component correctly.