javascript - 这相当于关于 React 生命周期的类中的 useEffect
问题描述
我正在使用滑块组件。
在我的示例程序中。Slider.create
被调用useEffect()
export default function SectionBasics() {
React.useEffect(() => {
if (
!document
.getElementById("sliderRegular")
.classList.contains("noUi-target")
) {
Slider.create(document.getElementById("sliderRegular"), {
start: [40],
connect: [true, false],
step: 1,
range: { min: 0, max: 100 }
});
}
});
return (<div id=slider></div>)
}
但是我想把它移到类 extends React.Component
所以,我不能用useEffect()
,然后我试着把它放进去render()
class ParamBoard extends React.Component {
render() {
if (
!document
.getElementById("slider")
.classList.contains("noUi-target")
) {
Slider.create(document.getElementById("slider"), {
start: [40],
connect: [true, false],
step: 1,
range: { min: 0, max: 100 }
});
}
return (<div id=slider></div>)
}
我想这是因为什么时候render()
被称为 idslider
还没有准备好。
但是我应该把 Slider.create 放在哪里?
解决方案
您应该在组件安装时创建一次滑块实例
在功能组件中,您可以简单地将其useEffect
与空数组依赖项挂钩
这相当于componentDidMount()
类组件。
它们在组件安装时运行一次。
export default function SectionBasics() {
React.useEffect(() => {
// ... your code goes here
}, []);
return <div id="slider"></div>;
}
class ParamBoard extends React.Component {
componentDidMount() {
// ... your code goes here
}
render() {
return <div id="slider"></div>;
}
}
推荐阅读
- python - 对象抛出多个实例,即使它是为单个实例配置的
- javascript - let 关键字在这段代码中是如何工作的?
- hyperledger-fabric - 失去与对等方的连接时,如何使fabric-network addBlockListener 自动重新连接?
- python - 在范围内循环跳过
- python - 使用现有 excel 文件的转换创建新的 excel 文件(使用 python)
- angularjs - 有什么方法可以从 1 而不是 0 启动 XAxis
- regex - 与 Notepad++ (npp) 中的模式匹配的精确文本(不是整行)
- kubernetes - 区别 pod 和部署
- android - Google Cloud Platform Firebase Installations Api 仅显示错误
- python - 在线性规划中设置一组变量的最小值