next.js 如何访问MaterialUI StepConnector的索引

9avjhtql  于 2022-12-12  发布在  其他
关注(0)|答案(1)|浏览(101)

我使用的是Stepper component,我想根据它们的索引单独设计连接器的样式。能够从StepConnector中访问当前步骤的索引的需求在二月份出现在this GitHub issue中,而a PR was accepted使useStepContext更容易。我使用的是MaterialUI的当前版本,5.10.4。
然而,我得到的是一个空对象,而不是我期望的索引上下文。这两种方法都会发生。我所做的和GitHub问题中的sample code之间的唯一区别是我使用的是5.10.4,而示例使用的是5.4.0。但也许我遗漏了什么?
下面是我的代码。简单的方法:

import { useStepContext } from "@mui/material/Step/StepContext";
import StepConnector from "@mui/material/StepConnector";

function CIConnector(props) {
    const ctx = useStepContext();
    console.log("context:", ctx);

  return (
    <StepConnector />
  );
}

在PR被接受之前,在原始问题中作为变通方案建议的困难方法:

import * as React from "react";
import StepContext from "@mui/material/Step/StepContext";
import StepConnector from "@mui/material/StepConnector";

function CIConnector(props) {
    const ctx = React.useContext(StepContext);
    console.log("context:", ctx);

  return (
    <StepConnector />
  );
}

在第二个版本中,当我中断调试器时,StepContextundefined。但是如果我进入useContext(),它似乎正确地接收了StepContext对象。尽管如此,它仍然返回一个空对象。
我做错了什么?
我也有一个minimal test失败,所以我有opened a bug with MUI

ldioqlga

ldioqlga1#

问题出在我导入方法的方式上。这段代码在MaterialUI 5.10.17上有效:

import { StepConnector, useStepContext } from "@mui/material/Step";

function CIConnector(props) {
    const ctx = useStepContext();
    console.log("context:", ctx);

  return (
    <StepConnector />
  );
}

相关问题