javascript - 有没有办法将函数重写为类代码?
问题描述
我有这个代码
const [setActive, setActiveState] = useState("");
const [setHeight, setHeightState] = useState("0px");
const content = useRef(null);
function toggleAccordion() {
setActiveState(setActive === "" ? "active" : "");
setHeightState(
setActive === "active" ? "0px" : `${content.current.scrollHeight}px`
);
}
我可以在类组件中重写它吗?(如何将此功能代码重写为类组件反应代码?)
export default class Accordion extends React.Component {
constructor(props) {
super(props);
this.state = {
setActive,
setActiveState
}
}
toggleAccordion() {
setActiveState(setActive )
}
}
我如何 setActive 和 setActiveState 来打开或关闭?
解决方案
使用类组件时,通过 setState 函数来更新状态。将一个对象传递给它,其中可以添加所有需要更新的状态变量,然后更新这些状态变量。
export default class Accordion extends React.Component {
constructor(props) {
super(props);
this.state = {
setActive:"",
setHeight:"0px"
}
}
toggleAccordion() {
let newState = {...this.state,
setActive:this.state.setActive === "" ? "active" : "",
setHeight:this.state.setActive === "active" ? "0px" : `${content.current.scrollHeight}px`}
this.setState(newState);
}
}
推荐阅读
- mysql - How to keep rows with NULL values that don't fulfill the condition in the WHERE clause after LEFT JOIN-ing two tables
- excel - VBA - SaveCopyAs hidden
- python - 绘制文本时枕头图像的隐含像素密度是多少?
- .net - 如何将 Azure Service Fabric 可靠服务与一个写入存储的服务和另一个从存储读取的服务一起使用
- nativescript - Nativescript Ios 垂直对齐
- vuepress - .vuepress/components 文件夹中的组件不呈现
- reactjs - 如何在 ReactJS 中切换多个类
- python - datetime64[ns] 列中日期之间的 30 天距离
- c - Crash when reading const* in c on ESP8266
- c# - Microsoft Authenticator 是否需要 Azure AD?