【发布时间】:2020-07-22 14:44:51
【问题描述】:
如何在自定义挂钩中创建组件,其中挂钩保存组件的状态?
我的尝试基本上是正确的,但是拖放没有按预期工作。相反,滑块将仅更改点击时的值。我认为问题在于,useState 钩子在X 定义之外被调用。但是我们如何在钩子中创建一个组件,然后我需要在钩子的其余部分中处理该内部组件的状态?
https://codesandbox.io/s/material-demo-milu3?file=/demo.js:0-391
import React from "react";
import Slider from "@material-ui/core/Slider";
function useComp() {
const [value, setValue] = React.useState(30);
const X = () => <Slider value={value} onChange={(_, v) => setValue(v)} />;
return { X, value };
}
export default function ContinuousSlider() {
const { X, value } = useComp();
return (
<div>
{value}
<X />
</div>
);
}
【问题讨论】:
-
@GalAbra 虽然根本问题是相同的(在重新渲染时丢失事件处理程序),但为另一个问题提供的解决方案对我来说没有帮助,因为我依赖钩子来做更多事情逻辑,而解决方案建议不使用钩子。
标签: reactjs material-ui react-hooks