Я создаю элемент списка в React, но не понимаю, почему он не отображается. Должен ли я делать компонент класса?
List.js
import React, { Component } from 'react';
import { withStyles } from 'material-ui/styles';
const styles = {
root: {
display: 'flex',
backgroundColor: "whitesmoke",
width: '100%',
},
}
function ListSeances(props) {
const { classes } = props;
const list = [1,2,3,4,5,6];
const listItems = list.map((item) =>{
<li>{ item }</li>
});
return (
<div className = {classes.root}>
<ul>{ listItems }</ul>
</div>
)
}
export default withStyles (styles)(ListSeances);
MapAppBar
class MapAppBar extends React.Component {
render() {
const { classes, animation } = this.props
return(
<div className = {classes.root}>
<App_Bar className = {classes.appBar} position = "fixed">
<Toolbar>
<Typography variant = "title" color = "inherit">
</Typography>
</Toolbar>
<TextFields/>
<DatePicker/>
<DatePicker2/>
<ListSeances/>
</App_Bar>
</div>
)
}
}
Мой список должен появиться в MapAppBar.js. Я вставил import ListSeances from './List';.





Вы ничего не возвращаете в функции карты. В вашем случае вы сопоставляете каждое значение с undefined, потому что вы написали блокировать заявление.
попробуйте (без фигурных скобок, ( и ) тоже не нужны):
const listItems = list.map((item) => (
<li>{ item }</li>
));
или (правильно с оператором возврата)
const listItems = list.map((item) => {
return <li>{ item }</li>
});
это из-за фигурных скобок. Я думаю, что действительно хороший способ описания того, как работают стрелочные функции, написал Мариус Шульц.
в вашем случае функция сопоставления при использовании функции стрелки может быть написана
const mapper = item => (<li>{ item }</li>)
или, если вы не возвращаете литерал объекта
const mapper = item => {
return <li>{ item }</li>
}
Спасибо за ваши объяснения и статьи. Это работает, и я понял, почему.