Material-UI 选项卡未在页面渲染上显示组件报告

Posted

技术标签:

【中文标题】Material-UI 选项卡未在页面渲染上显示组件报告【英文标题】:Material-UI tab not displaying component report on page render 【发布时间】:2021-10-03 20:20:24 【问题描述】:

我使用 react-router 设置了以下 material-ui 选项卡,但是当此页面呈现时,它会显示选项卡名称:Tab ATab B 就是这样,直到用户实际点击 Tab A 然后TabAReport 组件被渲染。

我实际上希望TabAReport 组件自动显示在页面渲染中,但由于某种原因,它没有。

我相信我已经为第一个选项卡设置了自动显示所需的值。

任何帮助都会很棒

           const routes = ["/tab-a-report", "/tab-b-report"];

          <Tabs
            value=0
            onChange=handleChange
            textColor="default"
            variant="standard"                                                   
          >
            <Tab 
              value=0
              label="Tab A" 
              component=Link
              to=`$routes[0]/$id`
            />
            <Tab 
              value=1
              label="Tab B" 
              component=Link
              to=`$routes[1]/$id`
            />
          </Tabs>

        <Switch>
          <Route exact path="/tab-a-report/:id" component=TabAReport />
          <Route exact path="/tab-b-report/:id" component=TabBReport />
        </Switch>

【问题讨论】:

【参考方案1】:

您可以通过将不带路径的路由指定为 Switch 元素的最后一个子元素来实现此目的。如果没有其他路由的路径与实际路径匹配,则将呈现此路由。详情请见React Router: Switch。

<Switch>
    <Route exact path="/tab-a-report/:id" component=TabAReport />
    <Route exact path="/tab-b-report/:id" component=TabBReport />
    <Route><TabAReport id=id /></Route> //pass the default id as property
</Switch>

要访问子组件中的 :id 参数,请使用 useParam hook 或在默认情况下从属性中读取它。

const id = useParams() || id: props.id

【讨论】:

但是作为路线的一部分,我像现在一样传入:id,它显示但不返回任何数据,因为它需要id。有什么想法吗? 如果不想指定 id 但想渲染默认组件,则必须在组件内定义默认 Id。 了解我可以使用 useParam 钩子,但作为 switch 元素的最后一个子元素的一部分,:id 没有被传递,我需要id。你能解释一下在没有提供路由的情况下如何使用这个 useParam 钩子吗? 现在一切顺利,但感谢您提供聊天服务。 const id = useParams() || id: props.id

以上是关于Material-UI 选项卡未在页面渲染上显示组件报告的主要内容,如果未能解决你的问题,请参考以下文章

引导导航选项卡未加载正确的页面

卡未在引导程序 4 中居中 [重复]

Dart Flutter DevTools“调试器”选项卡未显示

默认选项卡未将第一个选项卡显示为已选中

网络选项卡未显示应用在选择器上的 css

Vue.js 属性或方法“选项”未在实例上定义,但在渲染期间被引用