Я успешно создал компонент с именем market (родительский компонент), который извлекает данные из моей базы данных firestore с помощью отправленного действия, когда компонент монтируется на экран, чтобы хранить содержимое моей базы данных.в моем магазине редуксов.Теперь я извлек свои данные из хранилища избыточных данных и сопоставил их с дочерними компонентами с именем CardItem , который при выборе принимает идентификатор выбранного элемента и передает его через параметры маршрутов, а также подталкивает меня к маршруту, называемому * 1005.* Пользователь .Теперь я подключаю маршрут пользователя к моему хранилищу редуксов с намерением извлечь из него данные и отфильтровать пользователя, выбранного с использованием переданного идентификатора, через параметр маршрута, чтобы установить состояние в методе жизненного цикла componentDidMount () ,Моя логика была успешной до тех пор, пока я не попытался перезагрузить маршрут, что затем привело к исчезновению данных в моем хранилище избыточных данных (состояние вернулось неопределенным после первой перезагрузки).
Любое понимание этого высоко ценится, и я получаю данные из хранилища избыточных данных и фильтрую пользователя, используя идентификатор, переданный через параметры маршрута, лучше, чем необходимость отправлять другое действие в базу данных и выполнять фильтрацию позже?
Ниже представлен и рыночный (родительский компонент), и вложенный пользовательский (дочерний компонент) маршрут.
рыночный компонент
...
class market extends Component{
componentDidMount = () => {
this.props.fetch()
// console.log(this.props.data)
};
// state={
// }
userSelectHandler= (id)=> {
this.props.history.push({pathname: '/user/'+ id})
}
render(){
let list=null
if(this.props.loading){
list=(<Spinner/>)
}
if(this.props.data){
list=(
this.props.data.map((data)=>(
<CardItem userSelect={()=>this.userSelectHandler(data.id)} key={data.id} data={data}/> ))
)
}
return (
<section>
<SearchBar/>
{list}
</section>
)
}
}
const mapStateToProps= state=> {
return{
data: state.market.data,
loading: state.ui.loading
}
}
const mapDispatchToProps= dispatch=>{
return{
fetch: ()=>dispatch(fetchData())
}
}
export default connect(mapStateToProps,mapDispatchToProps)(market)
Пользовательский компонент ... класс Пользователь расширяет компонент {
componentDidMount= ()=>{
let copyData= [...this.props.user]
copyData= this.props.user.filter(user=> user.id === +this.props.match.params.id)
console.log(copyData[0])
this.setState({
user: copyData[0]
})
}
state={
user:null
}
componentDidUpdate= ()=> {
console.log('will update')
console.log(this.props.user)
}
render(){
let card = (<Spinner/>)
if(this.state.user){
card=(
<article className={classes.CardBox}>
<aside className={classes.CardBox_profDetails}>
<p>{this.state.user.name}</p>
<p></p>
</aside>
<aside className={classes.CardBox_pricingDetails}>
<p>{this.state.user.rate}/rmb</p>
<p>{this.state.user.range}rmb</p>
</aside>
</article>
)
}
return(
<>
{card}
</>
)
}
}
const mapStateToProps= state => {
return{
user: state.market.data
}
}
export default connect(mapStateToProps)(User)