reactjs - איך להפוך className ב-react-typescript למערך
נניח שיש לי רכיב עם הפניה אחת לסטיילים, עובד טוב
export const something = () => {
return (
<div className={styles.myStyle}
)
}:
אבל תגיד, אני רוצה שיהיה לי הפניה עם סגנונות מרובים כמו
export const something = () => {
return (
<div className={[styles.myStyle, styles.myOtherStyle]}
)
}:
TypeScript זורק שגיאה ואומר:
סוג הצפוי מגיע מהתכונה 'className' שהוצהרה כאן על סוג 'IntrinsicAttributes & IntrinsicClassAttributes> & Readonly> & Readonly<{ children?: ReactNode; }>'
איך אוכל לשנות את סוג className למערך כדי שיהיה ניתן לקבל את הפורמט שאני רוצה?
תשובה #1
סוג של className הוא String ואתה מעביר סוג Array<String>
className={[styles.myStyle, styles.myOtherStyle]}שזה לא ניתן לשיוך.
אז או שצריך להפוך את המערך הזה למחרוזת בעזרת join() או concatenation או להשתמש בספריית classnames
[styles.myStyle, styles.myOtherStyle].join(' '){styles.myStyle + ' ' + styles.myOtherStyle}$ {styles.myStyle}$ {styles.myOtherStyle}
שימוש בספריית classnames
import * as classnames from 'classnames'
className={classnames(styles.myStyle, styles.myOtherStyle)}
תשובה #2
className={[styles.myStyle, styles.myOtherStyle, "otherClass"].join(' ')}
className={`${styles.foo} ${styles.bar}`}
