@bem-react/classname: Support css-modules [RFC]
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- css, javascript, react
- Área
- frontend
Línea de trabajo
Comienza con el paquete @bem-react/classname y sigue el punto de entrada createCn descrito en el issue. Compara el uso propuesto de Button.js y Button.module.css con el comportamiento actual y, a continuación, verifica que las sobrescrituras de estilos funcionen para el componente y sus elementos tal como se muestra.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Пример использования
Подключаем хелпер и передаем в него название компонента а так же объект со стилями:
// src/components/Button/Button.js
import React from 'react'
import { createCn } from '@bem-react/classname'
import styles from './Button.module.css'
export const { merge, cn } = createCn('Button', styles)
export const Button = ({ children }) => {
return (
<button className={cn()}>
<span className={cn('Text')}>{children}</span>
</button>
)
}
Далее на уровне проекта или эксперимента мы можем переопределить нужные нам стили:
// src/experiments/Button/Button.js
import { merge, cn, Button } from '../../components/Button/Button'
import styles from './Button.module.css'
merge(styles)
export { merge, cn, Button }
Пример реализации
Используем фабрику для генерации классов, в замыкании храним доопределения для компонента и его элементов (в данной реализации не поддержаны модификаторы и миксы):
export function createCn(component, styles) {
const styleOverrides = []
return {
merge(overrides) {
styleOverrides.push(overrides)
},
cn(element) {
const target = element ? `${component}-${element}` : component
const className = [styles]
.concat(styleOverrides)
.map(shape => shape[target])
.join(' ')
return className
}
};
}
В таком кейсе нам не нужно будет докидывать микс на элементы снаружи, т.к. вся логика будет инкапсулирована внутри merge функции.
- Lenguaje dominante
- TypeScript
- Estrellas
- 450
- Forks
- 69
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bem/bem-react
-
@bem-react/classname: Unclear typing for element-bound class name formattersPosiblemente ocupada @rrabmig la tomó hace 112 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
-
Any Plans for Next.js Support?Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
@bem-react/classname: Can't add modifier with value === 0Posiblemente ocupada @frontstall la tomó hace 932 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 52/100
-
@bem-react/pack: support relative importsQuizá libre de nuevo @yarastqt la tomó hace 2100 días y no hay ningún pull request abierto. Abiertobug scope: pack
Todos los issues de bem/bem-react
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
cameri/nostream#811 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug p3 triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
bug javascript P2-medium python release:v3.1
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
adrirubio/claude-deck#546 ·
Los mantenedores suelen responder en 1 día
-
area: desktop area: website priority: P2 type: feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
appandflow/stim#3411 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
rjsf-team/react-jsonschema-form#5485 ·
Los mantenedores suelen responder en 2 días