//@flow import React from "react"; import { connect } from "react-redux"; import UserForm from "./UserForm"; import type { User } from "../types/User"; import { updateUser, deleteUser, editUser, fetchUser, getUsersFromState } from "../modules/users"; import { Route, Link } from "react-router-dom"; type Props = { name: string, fetchUser: string => void, usersByNames: Map, updateUser: User => void }; class EditUser extends React.Component { componentDidMount() { this.props.fetchUser(this.props.name); } render() { const submitUser = this.props.updateUser; const { usersByNames, name } = this.props; if (!usersByNames || usersByNames[name].loading) { return
Loading...
; } else { const user = usersByNames[name].entry; return (
submitUser(user)} user={user} />
); } } } const mapDispatchToProps = dispatch => { return { fetchUser: (name: string) => { dispatch(fetchUser(name)); }, updateUser: (user: User) => { dispatch(updateUser(user)); } }; }; const mapStateToProps = (state, ownProps) => { return { usersByNames: state.users.usersByNames, name: ownProps.match.params.name }; }; export default connect( mapStateToProps, mapDispatchToProps )(EditUser);