С чего я начал
У меня есть функция генератора Redux Saga, которая загружает мои (ложные) данные API:
function* fetchPickingScans({orderReference}){
try{
const response = yield call( scanningMockApi.getPickingScans, orderReference);
if (response !== undefined && response.scannedItems !== undefined){
const scans = response.scannedItems;
yield put(loadPickingScansSuccess(scans));
}
}
catch (error){
console.warn(error);
}
}
Эти данные передаются втупой компонент:
<div>
<ScansOverview scans={pickingScans}/>
</div>
Пока я настраивал, я продолжал отображать данные просто, просто неструктурированные настройки:
const ScansOverview = ({scans, classes}) => {
var scansArray = Object.values(scans); // ToArray
if (scansArray[0] === undefined){
return (
<div className={classes.root}>Please wait.</div>
)
}else{
return (
<div className={classes.root}>
{
scansArray.map(scanItem => {
return (
<div key={scanItem.id}>
<ScanLine scan={scanItem}/>
</div>
)
})
}
</div>
)
}
}
Технически это работает нормально, пока я не попробуюдобавить material-ui/core/Table
структуру.
Обновление по запросу
Фактический код страницы, который все настраивает:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import ScansOverview from './scansOverview';
import { loadPickingScans } from '../../actions';
import { pickingScansForOrderReference } from '../../selectors';
class OrderPickingScansPage extends Component {
componentDidMount(){
const { loadPickingScans } = this.props;
loadPickingScans(this.props.match.params.orderReference);
}
render() {
const {pickingScans} = this.props;
return (
<div>
<ScansOverview scans={pickingScans}/>
</div>
);
}
}
const mapStateToProps = state => {
const getPickingScansForOrderReference = pickingScansForOrderReference();
return {
pickingScans: getPickingScansForOrderReference(state)
};
}
function mapDispatchToProps(dispatch) {
return {
loadPickingScans: () => dispatch(loadPickingScans())
};
}
export default connect(mapStateToProps, mapDispatchToProps)(OrderPickingScansPage);
То, что я собираюсь
Как упомянуто выше, данные отображают, доказывая, что установка работает, но способом, который еще не является функционально желательным.Мне нужно добавить структуру на страницу.
Поэтому я добавил material-ui/core
для ее функциональности таблицы:
import Table from '@material-ui/core/Table';
import TableBody from '@material-ui/core/TableBody';
import TableCell from '@material-ui/core/TableCell';
import TableHead from '@material-ui/core/TableHead';
import TableRow from '@material-ui/core/TableRow';
По какой-то причине даже добавление пустой структуры таблицы приводит к исключению данных:
const ScansOverview = ({scans, classes}) => {
var scansArray = Object.values(scans); // ToArray
if (scansArray[0] === undefined){
return (
<div className={classes.root}>Please wait.</div>
)
}else{
return (
<div className={classes.root}>
<Table>
<TableBody>
<TableRow>
<TableCell>Test</TableCell>
</TableRow>
</TableBody>
</Table>
</div>
)
}
}
Причины:
Как я уже сказал, я даже не связываю данные стаблицы еще, так почему бы это случилось?
PS: ESLint не выдает никаких ошибок компиляции.