请问List组件接收到id值,render函数也能接收吗?

来源:4-2 使用动态路由获取不同列表内容(2)

weixin_慕码人9177259

2020-04-10 15:16:31

这个组件里面包含List组件

import React,{Component} from 'react';

import {Link} from 'react-router-dom';

import {List} from 'antd';

import axios from "axios";


class pageList extends Component{

constructor(props){

super(props);

this.state={

data:[]

}

}


以下是一个主要js文件

import React ,{Component,Fragment} from 'react';

import ReactDom from 'react-dom';

import 'antd/dist/antd.css' ;

import {Layout} from 'antd';

import "./style.css";

import List from './containers/List/';

import Detail from './containers/Detail/';

import AppHeader from './components/Header/';

import {BrowserRouter,Router,Route,Switch} from 'react-router-dom';

const {Header,Content,Footer}=Layout;

// <!--通过样式库进行页面布局-->

class App extends Component{

render(){

return (

<BrowserRouter>

<Fragment>

      <Layout style={{minWidth:1300}}>

        <Header className="app-header">

<AppHeader />

</Header>

        <Content className="app-content">

<Switch>

<Route path='/detail' component={Detail}/>

<Route path='/:id' component={List}/>

</Switch>

</Content>

        <Footer className="app-footer">Footer</Footer>

        </Layout>

</Fragment>

</BrowserRouter>

)

}

}


ReactDom.render(<App/>,document.getElementById("root"));



render(){

console.log(this.props.match.params.id);

return(

<List 

style={{background:"#fff"}}

bordered

  dataSource={this.state.data}

   renderItem={item=>( <List.Item>

      {item.title}

      </List.Item>)}

 

/>

   )

   //item遍历的是data对象item=data[0],...data[9]

}

 componentDidMount(){

axios.get('http://www.dell-lee.com/react/api/list.json')

.then((res)=>{

// console.log(res);

  this.setState({

   data:res.data.data

   })

// console.log(res.data.data);//[{},{},{}]

});

 }

}

export default pageList;


<Route path='/:id' component={List}/>

render(){

console.log(this.props.match.params.id);

return(

<List 。。。。。。。。

。。。。(以下省略)

这一行把链接上的参数传给了List组件,为什么List组件外面render函数的this.props对象也能接收到id值呢?




写回答

1回答

好帮手慕糖

2020-04-10

同学你好,同学的代码是自己写的吗?老师与源码对照了下,每个代码都不完全。

同学的疑问是:List文件夹下index.js中的this.props.match.params.id;如何获取到的值这个吗?

可以参考如下理解:

1、link里的item.id和index.js中route里的:id是同一个id值哦

http://img.mukewang.com/climg/5e904a420931661806020176.jpg

http://img.mukewang.com/climg/5e904a7209df424b05670067.jpg

点击a标签,href值会显示在地址栏中(如下),然后index.js中会通过动态路由匹配到第二个route。

http://img.mukewang.com/climg/5e904a870940c72402110051.jpg

2、path 属性中的 :id 就是路由的参数( param ), 组件中,可以直接通过 this.props.params.id 来访问实际的参数值(这里的id和定义路径的 :id 相对应)

如果不是指这里,可以详细的描述下问题需求(若是课程源码中的问题,也可以直接截图,表示下),继续提问哦。

祝学习愉快~

0

0 学习 · 10739 问题

查看课程