render()

in src/Wplaceholder/index.tsx [223:302]


  render() {
    const {
      className,
      width,
      height = '100%',
      style,
      loading,
      error,
      noData,
      empty,
      locale,
      language,
      ...otherProps
    } = this.props;

    const mainClasses = classNames(prefix, {
      [FullCrossName]: true,
      [prefix + '-loading']: !error && loading,
      [prefix + '-no-data']: !error && !loading && noData,
      [prefix + '-empty']: !error && !loading && empty,
      [prefix + '-error']: !!error,
      [className]: !!className,
    });

    let renderSvg = svg;
    if (error) {
      renderSvg = <></>;
    } else if (!loading && noData) {
      renderSvg = noDataSvg;
      warn(
        'Wplaceholder',
        'noData属性已废弃,如果基础图表如Wline无数据,无需额外使用该组件,如为业务自定义组件,请使用empty属性。',
      );

      chartLog('Wplaceholder', 'rulesInfo', {
        selector: `#${prefix}-no-data`,
        checkItem: 'empty',
        errorInfo: {
          value: 'noData', // 错误的值
          errorValue: 1, // 错误的数量
          errorRate: 1,
        },
      });
    } else if (empty) {
      renderSvg = <></>;
    } else if (loading) {
      renderSvg = <></>;
    }

    return (
      <div
        className={mainClasses}
        style={{
          width:
            !width || typeof width === 'number' || !/^[\d]+$/.test(width) ? width : Number(width),
          height:
            !height || typeof height === 'number' || !/^[\d]+$/.test(height)
              ? height
              : Number(height),
          ...style,
        }}
        {...otherProps}
      >
        {loading ? (
          loadingDom(
            getText(
              'loading',
              this.state?.language || language || this.context.language,
              locale || this.context.locale,
            ),
          )
        ) : (
          <div className={prefix + '-children'}>
            {renderSvg}
            {this.renderText(loading, error, noData, empty)}
          </div>
        )}
      </div>
    );
  }