请问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值哦
点击a标签,href值会显示在地址栏中(如下),然后index.js中会通过动态路由匹配到第二个route。
2、path 属性中的 :id 就是路由的参数( param ), 组件中,可以直接通过 this.props.params.id 来访问实际的参数值(这里的id和定义路径的 :id 相对应)
如果不是指这里,可以详细的描述下问题需求(若是课程源码中的问题,也可以直接截图,表示下),继续提问哦。
祝学习愉快~
相似问题