繁体   English   中英

ReactJS:如何以编程方式打开 Material-UI 手风琴?

[英]ReactJS: How do I open an Material-UI Accordion programmatically?

手风琴都有一个 id:

const CategoryDisplay: React.FC<Props> = (props) => {
...
  return (
    <>
      <Accordion
        id={`category-${accordion.id}`}/>
    </>
  );
};

export default CategoryDisplay;

我有一个 function 通过链接中的 hash 值找到一个带有 id 的特定 Accordion 并滚动到它:

useLayoutEffect(() => {
  const anchor = window.location.hash.split("#")[1];
  if (anchor) {
    const anchorEl = document.getElementById(anchor);
    if (anchorEl) {
      anchorEl.scrollIntoView();
    }
  }
}, []);

现在我还想扩展那个特定的手风琴。 我如何 go 关于这个 Material-UI 手风琴? 我必须以某种方式在 anchorEl 上设置扩展。

手风琴expanded道具。 将其设置为true并且 Accordion 将展开:

const CategoryDisplay: React.FC<Props> = (props) => {
const [expand, setExpand] = useState(new Array(numberOfAccordions).fill(false)) 
...
  return (
    <>
      <Accordion
        id={`category-${accordion.id}`} expanded={expand[accordion.id]}/>
    </>
  );
};

export default CategoryDisplay;

useLayoutEffect((accordionId) => {
  const anchor = window.location.hash.split("#")[1];
  if (anchor) {
    const anchorEl = document.getElementById(anchor);
    if (anchorEl) {
      let result = [...expand];
      result[accordionId] = true;
      setExpand(result);
      anchorEl.scrollIntoView();
    }
  }
}, []);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM