2 回答
TA贡献1942条经验 获得超3个赞
除非在卸载时有理由获取该值,否则您似乎可以在该值发生变化时对其进行跟踪。这样你就根本不需要useEffect:
const RangeInput = ({ inputID, min, max, defaultValue, children }) => {
const [value, setValue] = useState(defaultValue); // <-- keep track of value
const [isStatic, setIsStatic] = useState(false);
return (
<div>
<label htmlFor={inputID}>{children}</label>
{isStatic ? (
<span>{value}</span>
) : (
<input
type="range"
min={min}
max={max}
defaultValue={value}
onChange={e => setValue(e.target.value)} // <-- Set value onChange
id={inputID}
/>
)}
<button
onClick={() => {
setIsStatic(!isStatic);
}}
>
Toggle Static
</button>
</div>
);
};
添加回答
举报