方式 一:通过params
1.路由表中 <Route path=' /sort/:id ' component={Sort}></Route> 2.Link处 HTML方式 <Link to={ ' /sort/ ' + ' 2 ' } activeClassName='active'>XXXX</Link> JS方式 this.props.history.push( '/sort/'+'2' ) 3.sort页面 通过 this.props.metch.params.id 就可以接受到传递过来的参数(id)
方式 二: 通过query
通过query 前提:必须由其他页面跳过来,参数才会被传递过来
注:不需要配置路由表。路由表中的内容照常:
1.Link处 HTML方式 <Link to={{ path : ' /sort ' , query : { name : 'sunny' }}}> JS方式 this.props.history.push({ path : '/sort' ,query : { name: ' sunny'} }) 2.sort页面 this.props.location.query.name
方式 三:通过state
同query差不多,只是属性不一样,而且state传的参数是加密的,query传的参数是公开的,在地址栏
1.Link 处 HTML方式: <Link to={{ path : ' /sort ' , state : { name : 'sunny' }}}> JS方式: this.props.history.push({ pathname:'/sort',state:{name : 'sunny' } }) 2.sort页面 this.props.location.state.name
注意点:如果需要使用JS控制路由的跳转,需要使用withRouter
withRouter
高阶组件中的withRouter, 作用是将一个组件包裹进Route里面, 然后react-router的三个对象history, location, match就会被放进这个组件的props属性中.
export default connect(null, null)(withRouter(List));
非组件JS函数中触发路由跳转
从history中导入createHashHistory方法(如果您的react应用使用的是history路由则导入createBrowserHistory)
import { createHashHistory } from 'history'; // 如果是hash路由 import { createBrowserHistory } from 'history'; // 如果是history路由
创建history实例
const history = createHashHistory(); history.push('/login');
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接