【问题标题】:How to set up a ProgressBar for certain Interval - React Native(Should support IOS and Android)如何设置某个区间的 ProgressBar - React Native(应该支持 IOS 和 Android)
【发布时间】:2021-06-10 07:29:13
【问题描述】:

在我的应用程序中,我需要显示进度条,该进度应从 0 分钟增加到 1 分钟或给定 Max time。

试过 - 一个

我尝试了来自“react-native-paper”的进度条

 <ProgressBar progress={getTime} color={COLORS.grey} />

试过 - 两个

<Animated.View
            style={[
              {
                width: '100%',
                height: 5,
                borderRadius: 1,
                backgroundColor: COLORS.yellow,
              },
              {width: 25 + '%'},
            ]}
          />

但无法得到输出

让我知道如何实现这一点,如下图所示。谢谢

【问题讨论】:

    标签: react-native


    【解决方案1】:

    对于您尝试的两种解决方案,您都需要计算组件的进度值。对于react-native-paperProgressBar,该值应在0-1 的范围内。如果你是Animated.View解决方案,它应该在0-100的范围内。

    要计算此值,您需要知道总时间以及经过了多少时间。然后,您可以简单地将 elapsedTime/totalTime 相除以获得 0-1 之间的值。

    如果您需要从 0 到 5 分钟跟踪进度,并希望它每 1 秒更新一次:

    const useProgress = (maxTimeInSeconds = 300) => {
      const [elapsedTime, setElapsedTime] = useState(0);
      const [progress, setProgress] = useState(0);
    
      useEffect(() => {
        const intervalId = setInterval(() => {
          if (progress < 1) {
            setElapsedTime(t => t + 1);
          }
        }, 1000);
    
        return () => clearInterval(intervalId);
      }, []);
    
      useEffect(() => {
        setProgress(elapsedTime / maxTimeInSeconds);
      }, [elapsedTime]);
    
      return progress;
    };
    

    如何使用,在一个组件中:

    const progress = useProgress();
    
    return <ProgressBar progress={progress} />
    

    注意:代码未经测试。这将在调用useProgress 时自动开始进度。

    【讨论】:

    • 由于您在原始问题中有一个 getTime 函数调用,我假设您已经在跟踪开始时间、经过了多长时间等 - 是这样吗?我将通过跟踪 1 分钟进度的示例更新我的答案。
    • 如果我想要总时间 = 5 分钟和经过的时间 = 1 分钟,我想做什么?还有如何启动进度?
    • 在我的场景中,最大时间始终为 5 分钟。通过 api 调用,我会从计算剩余时间(或经过时间)中得到几个值。我想知道如何将值传递给 Progress 视图以及如何开始其进度
    • 进度不会自行运行。您必须不断计算进度值并将其传递给 ProgressBar 组件或用作自定义视图的宽度。例如,如果您希望每秒更新一次进度,那么您需要使用setInterval(callback, 1000) 并在callback 内部计算新的进度值。
    • 是的,我明白你的意思。顺便说一句,我可以看到任何示例代码都会很有帮助。
    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 2020-03-02
    • 1970-01-01
    • 2016-05-10
    相关资源
    最近更新 更多