在 React 中使按钮在手风琴中向上滑动
Make buttons slide up in accordion in React
我在 React 中有一个带有滑动按钮的手风琴 up/down 内容,就像这个 image
我做了一些功能组件,看起来像这样:
<SlideButtonContainer>
<SlideButton title="Title goes here">
Content goes here
</SlideButton>
<SlideButton title="Title goes here">
Content goes here
</SlideButton>
</SlideButtonContainer>
单击 SlideButton
会调用函数 handleClick
来更改组件的状态 opened
,使其内容在 false
上向上滑动或在 true
.
但是我怎样才能让 SlideButtonContainer
中的所有其他 SlideButtons
将它们的状态 opened
设置为 false
?
SlideButton
使用SlideDown from this repo,如下:
export default function SlideButton(props) {
const [opened, setOpened] = useState(false);
function handleClick() {
setOpened(!opened);
}
return (
<div className="slideButton">
<div className="slideButtonButton" onClick={handleClick}>
<div>
{props.title}
</div>
</div>
<div className="slideButtonContents">
<SlideDown>
{opened ? props.children : null}
</SlideDown>
</div>
</div>
);
}
SlideButtonContainer
只是一个样式 div
export default function SlideButtonContainer(props) {
return (
<div className="slideButtonContainer">
{ props.children }
</div>
);
}
已解决。
在 SlideButtonContainer
中,我在 render
上使用 React.cloneElement
并将 refs 设置为其子级,并且我可以在这个循环中使用子级函数:
for (var ref in this.refs) {
this.refs[ref].slideUp();
}
我在 React 中有一个带有滑动按钮的手风琴 up/down 内容,就像这个 image
我做了一些功能组件,看起来像这样:
<SlideButtonContainer>
<SlideButton title="Title goes here">
Content goes here
</SlideButton>
<SlideButton title="Title goes here">
Content goes here
</SlideButton>
</SlideButtonContainer>
单击 SlideButton
会调用函数 handleClick
来更改组件的状态 opened
,使其内容在 false
上向上滑动或在 true
.
但是我怎样才能让 SlideButtonContainer
中的所有其他 SlideButtons
将它们的状态 opened
设置为 false
?
SlideButton
使用SlideDown from this repo,如下:
export default function SlideButton(props) {
const [opened, setOpened] = useState(false);
function handleClick() {
setOpened(!opened);
}
return (
<div className="slideButton">
<div className="slideButtonButton" onClick={handleClick}>
<div>
{props.title}
</div>
</div>
<div className="slideButtonContents">
<SlideDown>
{opened ? props.children : null}
</SlideDown>
</div>
</div>
);
}
SlideButtonContainer
只是一个样式 div
export default function SlideButtonContainer(props) {
return (
<div className="slideButtonContainer">
{ props.children }
</div>
);
}
已解决。
在 SlideButtonContainer
中,我在 render
上使用 React.cloneElement
并将 refs 设置为其子级,并且我可以在这个循环中使用子级函数:
for (var ref in this.refs) {
this.refs[ref].slideUp();
}