Open vaz9 opened 6 years ago
Что то в духе:
decl({
block: 'Wrapper',
content({ children }) {
const { block, elem } = this;
return React.Children.map(children, child => {
return React.cloneElement(child, { mix: { block, elem } })
});
}
});
А тебе это нужно только для чтобы классы навесить?
Спасибо, интересно.
Да только для классов, что бы не использовать правила для потомков, типа .parent > .children
. Раз все по БЭМчику должно быть.
А как мне вызвать elem
в блоке Wrapper
?
Получается Wrapper
import {decl} from 'bem-react-core';
import React from 'react';
import El from 'e:El';
export default decl({
block: 'Wrapper',
content({ children }) {
const { block, elem } = this;
return React.Children.map(children, (child) => {
// elem = undefined
return React.cloneElement(child, { mix: { block, elem } })
});
}
});
Wrapper-El:
import {decl} from 'bem-react-core';
import React from 'react';
export default decl({
block: 'Wrapper',
elem: 'El',
tag: 'span'
});
и тк elem
- undefined, возвращает малышам .Wrapper
а ну да сорян this.elem доступен только внутри
Должно так работать
import {decl} from 'bem-react-core';
import React from 'react';
import El from 'e:El';
export default decl({
block: 'Wrapper',
content({ children }) {
return React.Children.map(children, (child) => {
return React.cloneElement(child, { mix: <El /> })
});
}
});
Угу, спасибо большое
Привет, подскажите как должен выглядеть блок
content()
для реализации не что похожего:те имеется блок
<Wrapper>
, и для всех компонентов внутри (тоже написанные на Бем) к их классам и модификаторам в конце добавить элемент от блока Wrapper.Еще пример:
сгенерит, типа:
Желательно для
react-bem-core
.Спасибо.