У меня есть этот код в родительском компоненте:
<Route path='/champions/:id' render={(props) => <ChampionDetails {...props} match={this.handleMatch}/>}/>
, где свойство соответствия будет функцией, которая извлекает данные из дочернего компонента (ChampionDetails). Фрагмент моего компонента ChampionDetails (дочерний):
import React, { Component } from 'react';
class ChampionDetails extends Component {
state = {
champId:this.props.match.params.id,
champData:null,
match:false
}
componentDidMount(){
console.log('ChampionDet mounted')
this.handleChampInfo();
console.log(this.props.match)
}
componentDidUpdate(){
console.log('ChampionDet updated')
}
handleChampInfo=()=>{
let champData = [];
let id = this.state.champId
console.log(id)
fetch('/api/getChampion?id='+id)
.then(data=> { return data.json() })
.then(json=> {
console.log(json.data);
champData.push(json.data);
this.setState({
champData:json.data,
match:true
})
this.props.match(true)
// this.props.history.push('/champions/'+id)
})
.catch(err=>{
console.log(err)
})
}
render(){
return(
<div>
<p>{this.state.champId}</p>
{this.state.champData===null ? null:<p>{this.state.champData.roles}</p>}
</div>
)
}
}
export default ChampionDetails;
Проблема здесь в том, что если у меня есть match = {} в маршруте моего родителя, то this.props.match.params.id станет неопределенным. Если я удаляю match = {}, я могу получить this.props.match.params.id
Я хотел бы знать, возможно ли передавать другие реквизиты, пока у меня есть доступ к this.props.match.params.id в моем случае.
Любая помощь будет высоко ценится!