Ho creato alcuni componenti funzionali stateless che rappresentano icone rotonde di social media utilizzate per collegamenti / condivisione, il codice è simile al seguente:
AbstractRound
import React from 'react';
import { withStyles } from '@material-ui/core/styles';
const AbstractRound = ({
imgSrc,
classes,
alt,
}) => {
return (
<img
className={classes.root}
src={imgSrc}
alt={alt}
/>
);
};
const styles = {
root: {
//Some specific styling here relating to size, borderRadius, etc
},
};
export default withStyles(styles)(
AbstractRound
);
FacebookRound
import React from 'react';
import AbstractRound from './AbstractRound';
import img from './facebook.svg';
const FacebookRound = () => {
return (
<AbstractRound
imgSrc={img}
alt="Find us on Facebook"
/>
);
};
export default FacebookRound;
E più tardi, lo userò come:
<FacebookRound/>
<GoogleRound/>
<TwitterRound/>
etc
Ora mi sembra di poterlo fare in un modo diverso - qualcosa come:
import facebookImage from './facebook.svg';
import googleImage from './google.svg';
const SocialMediaRound = ({
classes,
variant,
}) => {
const variants = {
facebook: {
alt: "Find us on Facebook",
img: facebookImage
},
google: {
alt: "Find us on Google Plus",
img: googleImage
}
}
const {img, alt} = variants[variant]
return (
<img
className={classes.root}
src={img}
alt={alt}
/>
);
};
E usalo come:
<SocialMediaRound variant = "facebook"/>
<SocialMediaRound varaint = "google"/>
La domanda è: c'è qualche ragione per cui uno è migliore dell'altro? In termini di dimensioni di raggruppamento - la seconda è necessariamente una dimensione di fascio maggiore rispetto alla prima? (cioè, cosa succede se stavo creando una libreria di potenzialmente 20 icone di social media - ma l'utente potrebbe utilizzare solo tre di esse).
Sicuramente penso che la prima versione sia più ordinata.
A quali principi dovrei prestare attenzione quando faccio questo tipo di decisione sul design?