Я пытаюсь реализовать свое первое приложение React-Redux и получил TypeError: Cannot read property 'map' of undefined от bundle.js. Я предполагаю, что это связано с массивом jokes и его неправильной интеграцией в мои реквизиты компонента React jokeList:
import React from 'react';
import {connect} from 'react-redux';
class ListOfJokes extends React.Component {
constructor(props) {
super(props)
}
render() {
const {jokes} = this.props;
return (
<ul>
{jokes.map(joke => (<li>joke</li>))}
</ul>
)
}
}
const mapStateToProps = state => ({
jokes: state.jokes
})
export default connect(mapStateToProps, null)(ListOfJokes);
Что на самом деле не так?





Вы уверены, что store.jokes всегда что-то содержит? Если вы получаете данные асинхронно, то при первом рендеринге store.jokes может быть undefined. Если это так, сделайте:
const mapStateToProps = state => ({
jokes: state.jokes || []
})
Используйте условный цикл, чтобы проверить, есть ли шутки или нет. когда задает шутку, тогда она будет отображать.
{jokes.length !== 0 ?
jokes.map(joke => (<li>joke</li>)) : (<li>no jokes</li>)
}
Возможный дубликат Невозможно прочитать карту свойства undefined в React