React Project: Step 7 Add Route

本文详细介绍了在React项目中实现路由导航和数据传递的步骤。从在index.js中引入BrowserRouter,到在App.js中配置组件路径,再到实现页面间的跳转、查询参数传递、Route组件的数据注入。此外,还涵盖了在Order组件中处理订单提交,以及添加订单页面和实现导航链接,以及获取并显示订单数据的方法。
摘要由CSDN通过智能技术生成

在index.js中加入BroswerRouter

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import {
   BrowserRouter} from 'react-router-dom';

ReactDOM.render(
<BrowserRouter>
     <App />
</BrowserRouter>
, document.getElementById('root'));
registerServiceWorker();

在App.js中设置每个component的path


class App extends Component {
   
  render () {
   
    return (
      <div>
        <Layout>
          <Switch>
            <Route path="/checkout" component={
   Checkout}/>
            <Route path="/" exact component={
   BurgerBuilder}/>
          </Switch>
        </Layout>
      </div>
    );
  }
}

Navigating to the checkout page

讲bugerbuilder中的continue事件改为进入/checkout地址
history.push为往栈中压入新地址,即进入新地址;

purchaseContinueHandler = () => {
   
        this.props.history.push('/checkout');
    }

将Route的props传入子元素的子元素的方法

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

const component=()=>{
   
}
export default withRoute(component);

Navigate Back & to page

histroy.goBack()

    checkoutCancelledHandler=()=>{
   
        this.props.history.goBack();
    }

history.replace(url)

checkoutContinuedHandler=()=>{
   
        this.props.history.replace('/check/contact-data');
    }

Passing ingredients via Quary Params

将要传递的内容变为用&和=连接的string,
将此string’传入history.push中的search元素中;

const queryParams= [];
        for(let i in this.state.ingredients){
   
            queryParams.push(encodeURIComponent(i)+'='+encodeURIComponent(this.state.ingredients[i]));           //将code转为可用在url的形式
        };
        const queryString = queryParams.join('&');
        this.props.history.push({
   
            pathname:'/checkout',
            search: '?'+queryString
        });

在该pathname的compnent中,对获取的url进行解析;
用URLSearchParams(this.props.location.search)解析url;
遍历该entries(),得到参数为[‘salad’,‘1’]的array;
放入新建的ingredients中,用setstate改变state,即可;

    componentDidMount(){
   
        const query = new URLSearchParams(this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值