open-hand / choerodon-ui

An enterprise UI framework and react-based implementation.
http://choerodon.io
MIT License
316 stars 140 forks source link

在某些情况下,Avatar组件会出现文字缩放比例异常,导致文字倒置 #1530

Closed leeyu98 closed 1 year ago

leeyu98 commented 1 year ago

一个已知的场景:Modal.open中使用 components/Page/List 组件,自定义渲染 titleRender 中使用 Avatar 组件;

image

下面是复现 Demo 代码中的主要部份:

import { Avatar } from 'choerodon-ui';
import { Button, Modal, useDataSet } from 'choerodon-ui/pro';
import { List } from 'components/Page';
import React from 'react';
import { getDomainDSProps } from './stores';

const Demo = () => {
  const titleRenderer = (value) => {
    return <Avatar>{`${value}`}</Avatar>;
  };
  const domainDS = useDataSet(getDomainDSProps, []);

  return (
    <Button
      onClick={() => {
        Modal.open({
          title: 'title',
          children: (
            <List
              dataSet={domainDS}
              idField="domainId"
              stateField="enableFlag"
              title="domainName" // title field
              titleRender={titleRenderer}
            />
          )
        });
      }}>
      Click me
    </Button>
  );
};

export default Demo;

经过调试后发现,源代码中相关的部分; 这种情况下由于 获取到的 avatarNode.getBoundingClientRect().width 为 0,所以计算出的缩放比例为负数。但是这个地方使用 avatarNode.offsetWidth 能够正确获取元素宽度。

image
Huihuawk commented 1 year ago

已修复,注意发版日志