React 组件选项卡和 URL

React component tabs and URLs

提问人:Sami.C 提问时间:11/17/2022 最后编辑:Sami.C 更新时间:11/17/2022 访问量:180

问:

我是 React 的新手,所以请和我一起裸露。

我们有一个元素列表,这些元素都根据传递到页面的查询字符串参数(我们称之为 CustomerID)加载自己的内容。单击选项卡时,URL 保持不变。假设 URL 是 /customer/customerid

在其中一个选项卡中,用户有机会单击与此客户相关的其他项目,这反过来又会更改 URL,并将另一个 id 传递到查询字符串中,我们将其称为 OrderID,URL 为 /customer/order/orderid

查看订单时,我希望客户选项卡菜单仍然显示,但我不确定处理此问题的最佳方法。我应该放弃标签,而只创建一些外观和感觉像标签的普通链接吗?或者我是否应该将菜单设置为导入到每个页面中的类,从每个页面包含的相关有效负载中传入 CustomerID

编辑:包含一些代码作为参考:

  <Formik
    initialValues={customer}
    enableReinitialize={true}
    validationSchema={validationSchema}
    onSubmit={handleFormSubmit}>
    {({ isSubmitting, values }) => (
      <FormikForm autoComplete="off">
        <AppCard>
          <Tabs defaultActiveKey="details">
            <Tab eventKey="details" title="Details">
              <Row>
                <Col md>
                  <InputText name="firstName" label="First Name" />
                </Col>
                <Col md>
                  <InputText name="lastName" label="Last Name" />
                </Col>
              </Row>
            </Tab>
            <Tab eventKey="orders" title="Orders">
              <CustomerOrders
                onCustomerOrderClick={onCustomerOrderClick}
                customerId={customer.customerId}/>
            </Tab>

          </Tabs>
        </AppCard>
      </FormikForm>
    )}
  </Formik>

  function onCustomerOrderClick(orderId: any){
    history.push(`/customer/order/edit/${orderId}`);
  }

CustomerOrders 类包含指向每个单独订单的链接...如下所示:

   <Row>
      <Col className="DataRowFunctions" md="2">
      <Link
        to={onCustomerOrderClick}
        onClick={(e) => {
          e.preventDefault();
          onCustomerOrderClick();
        }}
      >
       Edit   
      </Link>
      </Col>
</Row>

打开订单就是更改 URL,这让我回到了我的问题。

reactjs 反应标签

评论

1赞 Cornel Raiu 11/17/2022
请显示一些代码
0赞 Sami.C 11/17/2022
@CornelRaiu我只是编辑了一些代码片段,但不确定它是否过于有用,尽管就我提出的问题而言。
0赞 Normal 11/17/2022
你在用 react-router-dom 吗?如果你这样做,生活会好得多
0赞 Sami.C 11/17/2022
@Normal我们...为什么?
0赞 Normal 11/17/2022
既然这些布局有交集,并且两个布局之间的键是 URL,为什么不将外部选项卡布局设在 a 中,而将第二个布局设在里面呢?如果你使用的是 react-router-dom,你可以很好地使用它<Route element={<TabsLayout children={<Outlet />} />}

答: 暂无答案