Created
May 20, 2020 13:08
-
-
Save brlafreniere/e295743583a21007aa1369cd35ce6dfe to your computer and use it in GitHub Desktop.
When I navigate from say `/admin/books` to `/admin/authors` - the page attempts to render the author tables/forms except with records from books
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Switch> | |
<Route path="/admin/books"> | |
<RecordAdmin singular="book" plural="books" table={BookTable} form={BookForm} /> | |
</Route> | |
<Route path="/admin/authors"> | |
<RecordAdmin singular="author" plural="authors" table={AuthorTable} form={AuthorForm} /> | |
</Route> | |
<Route path="/admin/branches"> | |
<RecordAdmin singular="branch" plural="branches" table={BranchTable} form={BranchForm} /> | |
</Route> | |
</Switch> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export default class RecordAdmin extends React.Component { | |
constructor(props) { | |
super(props) | |
this.state = { | |
records: [] | |
} | |
} | |
componentDidMount() { | |
this.loadRecords(); | |
} | |
loadRecords = () => { | |
Axios.get(process.env.REACT_APP_API_URL + '/' + this.props.plural) | |
.then(response => { | |
this.setState({records: response.data}) | |
}).catch(error => { | |
console.log(error) | |
}) | |
} | |
deleteRecord = (event, recordId) => { | |
event.preventDefault(); | |
Axios.delete(process.env.REACT_APP_API_URL + '/' + this.props.plural + '/' + recordId).then(response => { | |
this.loadRecords(); | |
}) | |
} | |
render() { | |
// this allows us to pass props to children that are loaded via {this.props.children} | |
// more on that here: https://medium.com/better-programming/passing-data-to-props-children-in-react-5399baea0356 | |
const TableComponent = this.props.table | |
return ( | |
<div className="admin-body"> | |
{this.state.errorMessage ? <errorMessage msg={this.state.errorMessage} /> : null} | |
<Switch> | |
<Route exact path={`/admin/${this.props.plural}`}> | |
<div className="admin-menu"> | |
<NavLink className="btn btn-primary" to={`/admin/${this.props.plural}/new`}>New {this.props.singular.charAt(0).toUpperCase() + this.props.singular.slice(1)}</NavLink> | |
</div> | |
<TableComponent records={this.state.records} deleteRecord={this.deleteRecord} /> | |
</Route> | |
<Route exact path={`/admin/${this.props.plural}/new`}> | |
<NewRecordForm plural={this.props.plural} form={this.props.form} redirectCallback={this.loadRecords}/> | |
</Route> | |
</Switch> | |
</div> | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment