-
Notifications
You must be signed in to change notification settings - Fork 141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: Icon系コンポーネントの内部処理をリファクタリングする #5290
base: master
Are you sure you want to change the base?
Conversation
commit: |
@@ -113,79 +111,92 @@ const wrapper = tv({ | |||
}, | |||
}) | |||
|
|||
export const createIcon = (SvgIcon: IconType) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
createIconとgenerateIconは処理内容は完全に同じです。
型なども同様であり、aliasとしても存在する理由はありません。
既存のgeenrateIconは内部でcreateIconを呼び出す関係上、余計なオーバーヘッドがかかるデメリットがあるのみでした。
generateIconのほうはsmarthr-uiとして外部提供しているため、
- 既存のgenerateIconを削除
- 既存のcreateIconをgenerateIconにrename
することで整理しました
if (colorName in textColor) { | ||
return textColor[colorName as keyof typeof textColor] | ||
export const generateIcon = (SvgIcon: IconType) => { | ||
const Icon = React.memo<Props>( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
iconは属性が変わる可能性はかなり低く、また内容がUIからは想像できないほど複雑な処理を行っています。
再レンダリングが必要になる可能性と複雑目な内容を考慮し、デフォルトでmemo化するメリットが大きいと判断、対応しました
size, | ||
...props | ||
}) => { | ||
const actualAriaHidden = useMemo(() => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
aria-hiddenに設定するための値を一つのuseMemoに集約させました
return ( | ||
<span className={wrapperStyle}> | ||
{right && text} | ||
{visuallyHiddenAlt} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
もともとは alt text
の順序で表示されていましたが、UI上の並び順と違うため text alt
のように、UI上のアイコンのaltだということがわかる順序に変更しています
関連URL
概要
変更内容
確認方法