javascript - 渲染没有返回任何内容,但我不知道为什么

标签 javascript reactjs

github 上的 Circular-Progressbar 存储库,用于为我的网站设计仪表板,但当我尝试运行它时。我收到一条错误消息:

Uncaught Invariant Violation: Circle(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null. I cannot figure out why.

Circle.js 文件在我的主 App 文件中呈现

import React, { Component } from 'react';

import {CircularProgressbar,buildStyles} from "react-circular-progressbar";
import { easeQuadInOut } from "d3-ease";
import AnimatedProgressProvider from "./AnimatedProgressProvider";
import 'react-circular-progressbar/dist/styles.css';

class Circle extends Component{
    constructor(){
        super();
        this.state={
            category:"",
            percentage:""
        };
    }

    render(){
        <AnimatedProgressProvider valueStart={0} valueEnd={66} duration={1.4} easingFunction={easeQuadInOut}>
          {(value) => {
            const roundedValue = Math.round(value);
            return (
              <CircularProgressbar value={value} text={`${roundedValue}%`} styles={buildStyles({ pathTransition: 'none' })} />
            );
          }}
        </AnimatedProgressProvider>
      }
}

export default Circle;

Circle.js中使用了AnimatedProgressProvider.js文件

import React, {Component} from "react";
import { Animate } from "react-move";

class AnimatedProgressProvider extends Component {
  interval = undefined;

  state = {
    isAnimated: false
  };

  static defaultProps = {
    valueStart: 0
  };

  componentDidMount() {
    if (this.props.repeat) {
      this.interval = window.setInterval(() => {
        this.setState({
          isAnimated: !this.state.isAnimated
        });
      }, this.props.duration * 1000);
    } else {
      this.setState({
        isAnimated: !this.state.isAnimated
      });
    }
  }

  componentWillUnmount() {
    window.clearInterval(this.interval);
  }

  render() {
    return (
      <Animate
        start={() => ({
          value: this.props.valueStart
        })}
        update={() => ({
          value: [
            this.state.isAnimated ? this.props.valueEnd : this.props.valueStart
          ],
          timing: {
            duration: this.props.duration * 1000,
            ease: this.props.easingFunction
          }
        })}
      >
        {({ value }) => this.props.children(value)}
      </Animate>
    );
  }
}

export default AnimatedProgressProvider;

如能提供任何帮助,我们将不胜感激!

最佳答案

您需要在 render 中显式返回 JSX:

render(){
    return (
        <AnimatedProgressProvider valueStart={0} valueEnd={66} duration={1.4} easingFunction={easeQuadInOut}>
            {(value) => {
                const roundedValue = Math.round(value);
                return (
                    <CircularProgressbar value={value} text={`${roundedValue}%`} styles={buildStyles({ pathTransition: 'none' })} />
                );
            }}
        </AnimatedProgressProvider>
    )
}

关于javascript - 渲染没有返回任何内容,但我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170826/

相关文章:

javascript - onClick 事件在 React redux ToDoList 应用程序中未触发

Javascript 集 : any way to override comparison between elements?

reactjs - 如何在react中使用hook router获取当前url路径?

javascript - 是的,验证表单字段是否以其他输入字段的值开头

reactjs - 与 Rollup 捆绑后未应用 Tailwind 样式

javascript - 是否可以使用公用文件夹中的 create-react-app 提供静态文件?

javascript - Chart.js - 将数据集中的数据绑定(bind)到特定的图表标签

javascript从具有相同对象和值的另一个数组的数组中删除

javascript - HTML5 动画和缓动

javascript - 在 React 中更改父级的状态时,我的子级值没有改变?