【发布时间】:2020-12-02 08:05:08
【问题描述】:
我正在尝试使用 react.js 中范围滑块的 onChange 事件淡化文本。
正如您在附图中看到的,例如,当我点击 2(s) 时,“This is Video Title”的文本行应该在 2(s) 过去后淡出。
问题是,我无法理解如何将范围滑块标签的对应值链接为 onChange 函数以淡化文本。 (之前,我使用按钮单击事件执行相同的目标,但现在我需要使用范围滑块来执行此操作)。希望你能理解我的问题。
以下是我在这方面的工作文件。而且,我恳请您在这方面提供帮助。非常感谢。
(在App.js中,我使用Switch case通过相关标签捕获了0s,2s,5s,7s和10s的设定时间值。但是,我不确定这是否是正确的方法。请考虑一下,App.js 已经完成了一半,这就是我被困了几个小时的地方。
在DiscreteSlider.js中,我给marks赋值了不同的值,请忽略set值与标签的对应关系。)
App.js
import React, { useEffect, useState } from "react";
import "./App.css";
import DiscreteSlider from "./DiscreteSlider.js";
function App() {
const [time, setTime] = useState(0);
const [showText, setShowText] = useState(true);
const textFadeOutTimer = (e) => {
switch (e.target.value) {
case "0":
setTime(0);
break;
case "20":
setTime(2000);
break;
case "40":
setTime(5000);
break;
case "70":
setTime(7000);
break;
case "100":
setTime(10000);
break;
}
};
useEffect(() => {
if (time !== 0) {
const timeout = setTimeout(() => {
setShowText(false);
}, time);
return () => clearInterval(timeout);
}
}, [time]);
const textFader = () => {
setShowText(false);
};
return (
<>
<div className={showText ? "showTextOn" : "showTextOff"}>
This is Video Title
</div>
</>
);
}
export default App;
DiscreteSlider.js
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Slider from "@material-ui/core/Slider";
const useStyles = makeStyles({
root: {
width: 500,
},
});
const marks = [
{
value: 0,
label: "0(s)",
},
{
value: 20,
label: "2(s)",
},
{
value: 40,
label: "5(s)",
},
{
value: 70,
label: "7(s)",
},
{
value: 100,
label: "10(s)",
},
];
function DiscreteSlider(props) {
const [value, setValue] = React.useState(0);
const handleChange = (event, newValue) => {
setValue(newValue);
props.onChange(newValue);
};
const classes = useStyles();
return (
<div className={classes.root}>
<Slider
defaultValue={0}
step={null}
marks={marks}
onChange={handleChange}
/>
</div>
);
}
export default DiscreteSlider;
【问题讨论】:
-
这个答案对你有帮助吗?
-
欢迎来到 Stack Overflow。请看,What should I do when someone answers my question? 也可以通过tour 来熟悉如何使用这个平台。
-
@SatishPai 看起来此人有不接受答案的历史。
-
@PraveenKumarPurushothaman 至少这个家伙的评论就足够了:)
标签: reactjs rangeslider