Así que eliminar comentario es algo destructivo. Queríamos tener un estilo diferente, más aterrador. Sigamos. En el lado derecho del problema, verás todas estas opciones. Empecemos con las etiquetas. La diferencia aquí es que tiene un círculo, el color de la etiqueta. Parece inteligente. Pero cuando hablamos de asignados, los asignados tienen, no tienen etiquetas, tienen avatar. Así que parece lo suficientemente inteligente. Así que tenemos, podría ser un color de etiqueta, o podría ser un avatar. Correcto, y el componente ActionList sabe cómo renderizar ambos. Parece bien. Pero entonces tienes otras cosas como hitos, que tiene este icono, tienes proyectos, que tiene este icono. Tal vez solo necesitamos saber si es una etiqueta o un avatar o un icono. Y eso probablemente solo funciona, ¿no es así? Para un caso de uso de icono, tal vez simplemente importamos un icono de nuestra biblioteca de iconos y lo pasamos, por lo que los hitos saben cómo renderizar un icono. Pero, ¿qué pasa si le das un puerto de avatar o de icono? Así que esto es una de esas cosas en las que si la API te empuja en una cierta dirección debería ser la dirección que quieres. No quieres que la gente tome estas decisiones, que caiga en estas trampas porque no están tratando de romper la API, solo están tratando de crear la función de selección. Así que a partir de eso me doy cuenta de que solo debería haber un prefijo, solo debería haber un visual ser un avatar, podría ser una etiqueta, podría ser el icono de selección y lo importas y lo pasas como un elemento prefijo. Así que en este caso solo obtienes uno, obtienes un avatar, pero por supuesto si obtienes un elemento prefijo entonces también necesitas pasarlo como una propiedad. Así que obtienes algo como tal vez prefijo props donde tengo que pasar la URL del avatar. Y si lo piensas, esto es como si tienes un elemento y propiedades, esto es un componente así que bien podríamos llamarlo un componente. Así que esto es un prefijo que acepta cualquier componente que quieras y trata de ponerlo aquí. Ahora definitivamente más flexible, definitivamente más en sincronía con lo que necesitamos que haga, pero la compensación aquí es que podrías poner cualquier componente que quieras. Así que esto abre la API más que solo tres configuraciones permitidas para poner lo que quieras, pero si quieres un icono, entonces puedes. Puedes importar el icono y poner el icono de verificación es lo que quería.
Así que eliminar comentario es algo destructivo. Queríamos tener un estilo diferente, más aterrador. Podría ser tan simple como añadir una variante. Así que todo es variante por defecto o variante sutil. Y este es variante peligro, parece. Parece que encaja bien. Sigamos.
Ahora, en el lado derecho del problema, verás todas estas opciones. Tienes etiquetas, tienes asignados, tienes revisores. Empecemos con las etiquetas. Así que si miras las etiquetas, es algo similar. Es una lista de acciones con opciones que puedes hacer clic. La diferencia aquí es que tiene un círculo, el color de la etiqueta. Así que para empezar, diría que simplemente pongamos todos los elementos aquí. Hay un texto. Hay un deseleccionar. Y hay un color de etiqueta. Como solo tengo texto aquí, necesito algo para calificar que debería haber un círculo. Estoy poniendo esta clave inteligente especial aquí, que se llama color de etiqueta. Y si le pasas un valor hexadecimal, sabe que tiene que renderizar un color, renderizar un círculo con ese color. Y se encarga de cuál debería ser el margen, cuál debería ser el espacio entre el color y el texto. Parece inteligente. Y sabes, así que lo haces con todos ellos, y realísticamente, si esto se está utilizando en un producto, se verá algo así. Recorrerías repo.labels, o como una configuración de etiquetas, y sacarías el color de la etiqueta de él. Parece inteligente. Vale.
Pero cuando hablamos de asignados, los asignados tienen, no tienen etiquetas, tienen avatar. Así que simplemente hacemos repo.collaborators, los recorremos, y entonces tienes texto y onSelect, que es lo mismo. Pero en lugar de color de etiqueta, se convierte en avatar, y sabe que tiene que renderizar un círculo, cuánto espacio debería haber, y simplemente pasas el user.avatar.url. Así que parece lo suficientemente inteligente. Así que tenemos, podría ser un color de etiqueta, o podría ser un avatar. Correcto, y el componente ActionList sabe cómo renderizar ambos. Parece bien. Pero entonces tienes otras cosas como hitos, que tiene este icono, tienes proyectos, que tiene este icono. De hecho, si te muestro todas estas muestras, hay un montón de estas. Algunas de ellas tienen iconos, algunas de ellas no. Algunas de ellas tienen esta sangría, pero en general, parece que la mayoría de estas son avatares o sus iconos. Algunos de los iconos de colores, pero siguen siendo iconos. Así que tal vez solo necesitamos saber si es una etiqueta o un avatar o un icono. Y eso probablemente solo funciona, ¿no es así? Para un caso de uso de icono, tal vez simplemente importamos un icono de nuestra biblioteca de iconos y lo pasamos adelante, por lo que los hitos saben cómo renderizar un icono. Pero, ¿qué pasa si le das un puerto de avatar o de icono? No estoy diciendo que la gente esté tratando activamente de hacer esto, están tratando de romper algo, pero es más como si estuvieran tratando de lograr algo más, como una selección y quieren poner una marca de verificación, ¿se siente esto como una solución factible? Así que importas el icono de verificación y quieres mostrar la marca de verificación al lado de la persona a la que está asignado y terminarás con algo como esto en este caso donde no hay suficiente espacio para ambos, así que simplemente cambian todo y luego estás pensando en cómo creo ese margen, cómo consigo más espacio, tal vez puedo sobrescribir algo de margen con CSS y esta API parece que esa es una dirección válida aunque no queremos que hagas eso con el componente así que esto es una de esas cosas donde si la API te empuja en una cierta dirección debería ser la dirección que quieres. No quieres que la gente tome estas decisiones, que caiga en estas trampas porque no están tratando de romper la API, solo están tratando de crear la función de selección. Así que a partir de eso me doy cuenta de que solo debería haber un prefijo, solo debería haber un visual ser un avatar, podría ser una etiqueta, podría ser el icono de selección y lo importas y lo pasas como un elemento prefijo. Así que en este caso solo obtienes uno, obtienes un avatar, pero por supuesto si obtienes un prefijo elemento entonces también necesitas pasarlo como una propiedad. Así que obtienes algo como tal vez prefijo props donde tengo que pasar la URL del avatar. Y si lo piensas, esto es como si tienes un elemento y propiedades, esto es un componente así que bien podríamos llamarlo un componente. Así que esto es un prefijo que acepta cualquier componente que quieras y trata de ponerlo aquí. Ahora definitivamente más flexible, definitivamente más en sincronía con lo que necesitamos que haga, pero la compensación aquí es que podrías poner cualquier componente que quieras. Así que esto abre la API más que solo tres configuraciones permitidas para poner lo que quieras, pero si quieres un icono, entonces puedes. Puedes importar el icono y poner el icono de verificación es lo que quería.
Comments