2016-08-30 18 views
7

Reaksiyonu kullanıyorum ve basitçe çocukları işlemek ve duruma göre bir sınıf eklemeniz gereken bir bileşenim var. Bunu yapmanın en iyi yolu nedir? Sen çocuğa aşağı bir aksesuar geçebilirTepki - çocuk bileşenleri için sınıf ekleme

var childClasses = [], 
    childClassNames; 
if (condition) { 
    childClasses.push('my-class-name'); 
} 
childClassNames = childClasses.join(' '); 

return (<div className={childClassNames}> 
    .... (your component here) 
</div>); 
+0

[Bu] (http://stackoverflow.com/questions/26863938/modify-attributes-of-children-in-reactjs-component) size yardımcı olacaktır. –

cevap

10

bir hafta önce anladım, bu başka ne olabilir istedik:

export default class ContainerComponent extends React.Component { 
    constructor(props) { 
     super(props); 

     this.modifyChildren = this.modifyChildren.bind(this); 
    } 

    modifyChildren(child) { 
     const className = classNames(
      child.props.className, 
      {...otherClassses} 
     ); 

     const props = { 
      className 
     }; 

     return React.cloneElement(child, props); 
    } 
    render() { 
     return (<div> 
      {React.Children.map(this.props.children, this.modifyChildren(child))} 
     </div>); 
    } 
} 
+1

Bu çözümü denedim, ancak render işlevinden bir hata alıyorum, "çocuk tanımlanmamış." Orada anonim bir işleve geçersem, sınıf yöntemini çağırmak yerine (örneğinizde this.modifyChildren) hata gider ve her şey yolunda gider. Bu, hem "şişman ok" hem de geleneksel JS anonim işlevleri ile çalışır. Kodumuz neredeyse aynı olduğunda neden sizin için işe yaradığını anlayamıyorum. –

0

İçinde senin bileşeni yöntemini işlemek

çocuğunuzla olarak

işlemek:

const classes = []; 

if (props.contentVisible) 
    classes.push('visible'); 

<div className={classes.join(' ')} /> 
+0

Bileşenlerin her birinde bunu yapmak istemiyorum, testi yapmak için bunları içeren bileşenin olmasını istiyorum ve gerekiyorsa sınıfı ekleyin – Pachu

+0

Tam olarak neyi başarmaya çalıştığınızdan emin değilsiniz. Ana bileşeniniz gerekli tüm sınıfları hesaplayabilir ve bunları çocuklara sahne olarak iletebilir. – Maggie

1

ve uygulamak ne sınıf seçebilir (ya da sadece sınıf adını geçmesine ama bu daha semantik olduğunu):

İlgili konular