1、写法不一样
一般组件:是指创建的普通类组件或函数组件,eg:
<Mycomponent/>
路由组件:是指被路由定义的组件, eg:
<Route path="/mycomonent" component={Mycomponent} />
2、存放位置一般不一样
一般组件:一般存放在components文件夹里,存放一些公用,可复用的组件。
路由组件:一般存放在pages文件下,存放一些路由定义的页面组件。
3、接收的props值不一样
一般组件:父组件传递了那些属性,就可接收那些
(注:若可像路由组件一样拥有路由的Api,得要借助withRouter
eg: 在组件导出是:export default withRouter(Mycomponent)
)
withRouter原理:高阶组件中的withRouter, 作用是将一个组件包裹进Route里面, 然后react-router的三个对象history, location, match就会被放进这个组件的props属性中.一般组件可依靠它去跳转一个页面,
路由组件:接收到三个固定的属性(简化版,只是把常用的列出来)
history:
go: ƒ go(n)
goBack: ƒ goBack()
goForward: ƒ goForward()
push: ƒ push(path, state)
replace: ƒ replace(path, state)
location:
pathname: "/mycomponent"
search: ""
state: undefined
match:
params: {}
path: "/mycomponent"
url: "/mycomponent