score:-2
If you're on Node JS and you're seeing this error in a Class you've added to support a Cucumber test, it's because Cucumber will automatically try to run anything that exports a function, and NodeJS internally converts a Class to a function.
So instead of this:
module.exports = MyClass;
do this:
module.exports.MyClass = MyClass;
Then, when you import it into your steps file, do it like this:
let MyClass = require("myclass.js").MyClass;
This way you're not exporting a function. Read more here.
score:-1
For me it was a wrong import of a reducer in the rootReducer.js. I imported container instead of reducer file.
Example
import settings from './pages/Settings';
But sure it should be
import settings from './pages/Settings/reducer';
Where settings directory contains following files actions.js, index.js, reducer.js.
To check it you can log reducers arg of the assertReducerShape() function from the redux/es/redux.js.
score:0
I have also run into this, it is possible you have a javascript error inside of your react component. Make sure if you are using a dependency you are using the new
operator on the class to instantiate the new instance. Error will throw if
this.classInstance = Class({})
instead use
this.classInstance = new Class({})
you will see in the error chain in the browser
at ReactCompositeComponentWrapper._constructComponentWithoutOwner
that is the giveaway I believe.
score:0
In my case i wrote comment
in place of Component
by mistake
I just wrote this.
import React, { Component } from 'react';
class Something extends Component{
render() {
return();
}
}
Instead of this.
import React, { Component } from 'react';
class Something extends comment{
render() {
return();
}
}
it's not a big deal but for a beginner like me it's really confusing. I hope this will be helpfull.
score:0
In my case, using JSX a parent component was calling other components without the "<>"
<ComponentA someProp={someCheck ? ComponentX : ComponentY} />
fix
<ComponentA someProp={someCheck ? <ComponentX /> : <ComponentY />} />
score:0
Another report here: It didn't work as I exported:
export default compose(
injectIntl,
connect(mapStateToProps)(Onboarding)
);
instead of
export default compose(
injectIntl,
connect(mapStateToProps)
)(Onboarding);
Note the position of the brackets. Both are correct and won't get caught by either a linter or prettier or something similar. Took me a while to track it down.
score:0
In my case, I accidentally put component name (Home
) as the first argument to connect
function while it was supposed to be at the end. duh.
This one -surely- gave me the error:
export default connect(Home)(mapStateToProps, mapDispatchToProps)
But this one worked -surely- fine:
export default connect(mapStateToProps, mapDispatchToProps)(Home)
score:0
This occured when I accidentally named my render
function incorrectly:
import React from 'react';
export class MyComponent extends React.Component {
noCalledRender() {
return (
<div>
Hello, world!
</div>
);
}
}
My instance of this error was simply caused because my class did not have a proper render
method.
score:0
Actually all the problem redux connect. solutions:
Correct:
export default connect(mapStateToProps, mapDispatchToProps)(PageName)
Wrong & Bug:
export default connect(PageName)(mapStateToProps, mapDispatchToProps)
score:0
In my scenario I was attempting to use hot reloading on a custom hook (not sure why, probably just muscle memory when creating components).
const useCustomHook = () => {
const params = useParams();
return useSelector(
// Do things
);
};
// The next line is what breaks it
export default hot(module)(useCustomHook);
The correct way
const useCustomHook = () => {
const params = useParams();
return useSelector(
// Do things
);
};
export default useCustomHook;
Apparently you can't hot reload hook 😅 😂
score:0
In my case I accidentally called objectOf
static propTypes = {
appStore: PropTypes.objectOf(AppStore).isRequired
}
Instead of instanceOf:
static propTypes = {
appStore: PropTypes.instanceOf(AppStore).isRequired
}
score:1
For me, it was because I'd accidentally deleted my render
method !
I had a class with a componentWillReceiveProps
method I didn't need anymore, immediately preceding a short render
method. In my haste removing it, I accidentally removed the entire render
method as well.
This was a PAIN to track down, as I was getting console errors pointing at comments in completely irrelevant files as being the "source" of the problem.
score:1
I had a similar problem I was calling the render method incorrectly
Gave an error:
render = () => {
...
}
instead of
correct:
render(){
...
}
score:1
I had it when I did so :
function foo() (...) export default foo
correctly:
export default () =>(...);
or
const foo = ...
export default foo
score:1
For me it happened because I didn't wrap my connect function properly, and tried to export default two components
score:1
I faced this error when I imported the wrong class and referred to wrong store while using mobx in react-native.
I faced error in this snippet :
import { inject, Observer } from "mobx-react";
@inject ("counter")
@Observer
After few corrections like as below snippet. I resolved my issue like this way.
import { inject, observer } from "mobx-react";
@inject("counterStore")
@observer
What was actually wrong,I was using the wrong class instead of observer
I used Observer
and instead of counterStore
I used counter
. I solved my issue like this way.
score:1
I experienced this when writing an import statement wrong while importing a function, rather than a class. If removeMaterial
is a function in another module:
Right:
import { removeMaterial } from './ClaimForm';
Wrong:
import removeMaterial from './ClaimForm';
score:2
In file MyComponent.js
export default class MyComponent extends React.Component {
...
}
I put some function related to that component:
export default class MyComponent extends React.Component {
...
}
export myFunction() {
...
}
and then in another file imported that function:
import myFunction from './MyComponent'
...
myFunction() // => bang! "Cannot call a class as a function"
...
Can you spot the problem?
I forgot the curly braces, and imported MyComponent
under name myFunction
!
So, the fix was:
import {myFunction} from './MyComponent'
score:2
I received this error by making small mistake. My error was exporting the class as a function instead of as a class. At the bottom of my class file I had:
export default InputField();
when it should have been:
export default InputField;
score:3
This is a general issue, and doesn't appear in a single case. But, the common problem in all the cases is that you forget to import
a specific component (doesn't matter if it's either from a library that you installed or a custom made component that you created):
import {SomeClass} from 'some-library'
When you use it later, without importing it, the compiler thinks it's a function. Therefore, it breaks. This is a common example:
imports
...code...
and then somewhere inside your code
<Image {..some props} />
If you forgot to import the component <Image />
then the compiler will not complain like it does for other imports, but will break when it reaches your code.
score:4
Looks like there're no single case when this error appears.
Happened to me when I didn't declare constructor in statefull component.
class MyComponent extends Component {
render() {
return <div>Test</div>;
}
}
instead of
class MyComponent extends Component {
constructor(props) {
super(props);
}
render() {
return <div>Test</div>;
}
}
score:6
Post.proptypes = {
}
to
Post.propTypes = {
}
someone should comment on how to monitor such error in a very precise way.
score:6
Two things you can check is,
class Slider extends React.Component {
// Your React Code
}
Slider.propTypes = {
// accessibility: PropTypes.bool,
}
- Make sure that you extends React.Component
- Use propTypes instead of prototype (as per IDE intellisense)
score:7
For me it was because i used prototype instead of propTypes
class MyComponent extends Component {
render() {
return <div>Test</div>;
}
}
MyComponent.prototype = {
};
it ought to be
MyComponent.propTypes = {
};
score:8
Mostly these issues occur when you miss extending Component from react:
import React, {Component} from 'react'
export default class TimePicker extends Component {
render() {
return();
}
}
score:15
You have duplicated export default
declaration. The first one get overridden by second one which is actually a function.
score:15
I experienced the same issue, it occurred because my ES6
component class was not extending React.Component
.
score:17
For me, it was ComponentName.prototype
instead of ComponentName.propTypes
.
auto suggested by Phpstorm
IDE. Hope it will help someone.
score:52
Happened to me because I used
PropTypes.arrayOf(SomeClass)
instead of
PropTypes.arrayOf(PropTypes.instanceOf(SomeClass))
score:65
tl;dr
If you use React Router v4 check your <Route/>
component if you indeed use the component
prop to pass your class based React component!
More generally: If your class seems ok, check if the code that calls it doesn't try to use it as a function.
Explanation
I got this error because I was using React Router v4 and I accidentally used the render
prop instead of the component
one in the <Route/>
component to pass my component that was a class. This was a problem, because render
expects (calls) a function, while component
is the one that will work on React components.
So in this code:
<HashRouter>
<Switch>
<Route path="/" render={MyComponent} />
</Switch>
</HashRouter>
The line containing the <Route/>
component, should have been written like this:
<Route path="/" component={MyComponent} />
It is a shame, that they don't check it and give a usable error for such and easy to catch mistake.
score:105
For me it was because I forgot to use the new
keyword when setting up Animated state.
eg:
fadeAnim: Animated.Value(0),
to
fadeAnim: new Animated.Value(0),
would fix it.
score:220
For me it happened when I forgot to write extends React.Component
at the end.
I know it's not exactly what YOU had, but others reading this answer can benefit from this, hopefully.
Source: stackoverflow.com
Related Query
- Getting Uncaught TypeError: Cannot call a class as a function when I use a React HOC
- How to call a function method in a component class render method? getting Uncaught TypeError: Cannot read property 'value' of null in React
- Getting "Cannot call a class as a function" in my React Project
- react webpack setup - Cannot call a class as a function
- Uncaught TypeError: Cannot call a class as a function React
- React HOC: TypeError: Cannot call a class as a function
- Uncaught TypeError: Cannot call a class as a function in react and redux
- Getting “Cannot call a class as a function” in my React Project :throw new TypeError("Cannot call a class as a function");
- Getting “Cannot call a class as a function” in my React Project
- React / Redux TypeError: Cannot call a class as a function
- react cannot call a class as a function
- Call a static function into the class React ES6
- Cannot call a class as a function, React router show error in console if i use es6 format
- react functional component with ag grid cannot call parent function via context
- TypeError: Cannot call a class as a function in stenciljs
- while applying applyMiddleware(thunk) getting "Cannot call a class as a function" , in react js
- React Hook "useState" cannot be called in a class component. React Hooks must be called in a React function component or a custom React Hook function
- TypeError: Cannot call a class as a function when running Jest test
- Should I call a function on every render or use arrow functions in a react class component?
- How to convert a React Class Component to a Function Component this project
- How to call parent class function in child class in React JS
- TypeError: Cannot call a class as a function (React/Redux)
- TypeError: Cannot call a class as a function after deploying to Netlify?
- ReactJS - Uncaught TypeError: Cannot call a class as a function
- reactJS - TypeError: Cannot call a class as a function
- Getting TypeError: Cannot read property 'localeCompare' of undefined for my sortBy function in my React component and I'm not sure why
- react-redux error cannot call a class as a function
- React: TypeError: Cannot call a class as a function
- Getting Expected an assignment or function call and instead saw an expression no-unused-expressions error when trying to render a component in React
- I'm attempting to call a function from the context in the componentDidMount function but i'm getting a Cannot read property of undefined error
More Query from same tag
- How to pass data in react js inside a file
- Get return and assign value from promise
- Rendering text with Header tag
- Gatsby slug broken
- Jest + @testing-library/react throws error on a .mjs file from [dom-accessibility-api] library
- React, How to output raw `null` and `undefined` and empty string `''`?
- 'npm start' gives an error and does not start the development server
- Functional Component child component does not re-rendered after its props is updated by its Parent
- What is best practice for filtering a map in React JSX return
- How can I add computed state to graph objects in React Apollo?
- Array Re arrange in React js
- Can I get MapBox layers, with React.js MapBox GL JS, that have been created in MapBox Studio?
- Create Ract App build includes unused libraries and unused components
- Yup and react-hook-form: how to create conditional mandatory fields in a form?
- How to expose an Environment Variable to the front end in Next.js?
- React Router not passing params through useParams onto my page
- React + Styled Components - separating and re-using css "bundles"
- Return an object with a function
- Prevent state from updating if input string has spaces
- React Select - setState of prop
- How to best handle the state of one component used by two urls (1 sub url) in React / Router
- react-router does not work in production and surge deployments
- react-route display blank page
- Find last element in array from a specific index
- useEffect update only when some fields in states have been changed
- Event handler not picking up correct state value
- What is the benefit importing React, {Component} instead of just React?
- Reducer state lost after history.push()
- Can I fetch api every time that props change on ComponentDidUpdate?
- TypeError: this.props.messages.map is not a function