ProfileContainer.js
import React from "react";
import Profile from "./Profile";
import * as axios from "axios";
import {setUserProfile} from "../../redux/profile-reducer";
import {connect} from 'react-redux';
import {useParams} from "react-router-dom";
const withRouter = WrappedComponent => props => {
const params = useParams();
// etc... other react-router-dom v6 hooks
return (
<WrappedComponent
{...props}
params={params}
// etc...
/>
);
};
class ProfileContainer extends React.Component{
componentDidMount() {
// debugger;
//
console.log(this.props);
let userId = this.props.params.userId;
if (!userId){
userId=2;
}
axios.get(`https://social-network.samuraijs.com/api/1.0/profile/`+userId)
.then(response => {
// debugger;
this.props.setUserProfile(response.data);
});
}
render () {
// debugger;
return(
<Profile {...this.props} profile={this.props.profile}/>
)
}
}
let mapStateToProps = (state) => ({
profile: state.profilePage.profile
});
let WithUrlDataContainerComponent = withRouter(ProfileContainer);
export default connect(mapStateToProps, {
setUserProfile
}) (WithUrlDataContainerComponent);
App.js
<Route path="/profile" element={<ProfileContainer />}>
<Route path=":userId" element={<ProfileContainer />} />
</Route>
это 100% работает но не самый лучший способ и нужно делать по-другому но я решаю частную задачу - нужно доделать работу в парадигме IT React Kamasutra версии 2019 года