小编ray*_*ism的帖子

如何访问“this.props.match.params”以及其他道具?

我的父组件中有此代码:

<Route path='/champions/:id' render={(props) => <ChampionDetails {...props} match={this.handleMatch}/>}/>
Run Code Online (Sandbox Code Playgroud)

其中匹配道具将是一个从子组件(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>
        ) …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router

5
推荐指数
2
解决办法
5万
查看次数

标签 统计

javascript ×1

react-router ×1

reactjs ×1