import * as React from 'react'; import { withRouter, RouteComponentProps } from 'react-router-dom'; 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'; import Paper from '@material-ui/core/Paper'; // means border import connect from '../../../../framework/src/flux/connect'; import { loadAllAuthorsAsync } from '../actions/authorActions'; import { IAuthor } from '../models/author'; interface IAuthorsListProps { authors: IAuthor[], busy: boolean, onLoadAllAuthors: () => void } class AuthorsListComponent extends React.Component { render(): JSX.Element { const { authors, busy } = this.props; return ( Id First Name Last Name { authors.map(author => ( this.editAuthor(author) }> { author.id } { author.firstName } { author.lastName } )) }
); }; public componentDidMount() { this.props.onLoadAllAuthors(); } private editAuthor = (author: IAuthor) => { author && this.props.history.push(this.props.match.path + '/' + author.id); }; } export const AuthorsList = withRouter( connect( ({ demo: state }) => ({ authors: state.listAuthors.authors, busy: state.listAuthors.busy }), (dispatcher) => ({ onLoadAllAuthors: () => { dispatcher.dispatch(loadAllAuthorsAsync) } }))(AuthorsListComponent)); export default AuthorsList;