Reputation: 452
TypeError: Cannot read property 'length' of undefined
That's what the compiler says when I run my react app. What I do need to do with this?
request = (start,end) => {
if(this.state.teams.length < 1){
axios.get(`${ URL }/teams`)
.then( response => {
this.setState({
teams:response.data
})
})
}
axios.get(`${ URL }/articles?_start=${start}&_end=${end}`)
.then( response => {
this.setState({
items:[...this.state.items,...response.data]
})
})
}
Upvotes: 5
Views: 40845
Reputation: 41
This issue happens especially in react or react native, just add a question sign e.g,
{title?.length>20? title?.substring(0,20)+'...':title}
Upvotes: 0
Reputation: 81370
Probably because you're having a variable that is supposed to contain an array but is undefined
when referencing the length
property. Try searching for .length
in your editor and create an empty array if it's not initialized:
if ((arr || []).length > 0) {
// do something
}
// or
if (arr?.length > 0) {
// do something
}
Upvotes: 0
Reputation: 1442
I would suggest to check first if the props is undefined or empty or even declared.
for example:-
const card = props && props.cards && props.cards.length > 0 ?
props.cards.map((card, i) => {
return (
<card >
)
}) : '';
And return your card.
Upvotes: 7
Reputation: 1277
Be sure that the teams value of your component's state is initialized with an array value like this :
class MyComponent extends React.Component {
state: {
teams: [],
};
}
Upvotes: 3
Reputation: 81
I would suggest using a check to see if "teams" is undefined before trying to get the length.
if (value === undefined) {
// value is undefined
}
Upvotes: 4