2017-01-08 26 views
9

benim sınıf temelli bileşen gerektirir ve uygular ben aslen sanmıyoruz herhangi diğer sahne aşağı geçerdi nasılSınıfa tepki vermek için diğer tüm prodüksiyonlar nasıl geçilir?

<Component propOne={this.props.one} propTwo={this.props.two}> 
    {this.props.children} 
</Component> 

yani ama isteyeyim benim bileşenini kullanarak başkasının söylüyorlar 3 sahne var ki kullanmak?

Ben

<Component propOne={this.props.one} propTwo={this.props.two} {...this.props} > 
    {this.props.children} 
</Component> 

düşünme Ama

+0

Belki de bu yardım edebilir? http://stackoverflow.com/a/32371612/340760 – BrunoLM

+0

@BrunoLM Bu, çocukları "alt öğelere" nasıl geçireceğini gösteriyor. Sorduğum soru, sınıf bileşenimdeki * beklenmedik */* diğer * adımların nasıl elde edileceğidir, yani '' 'id 'prop için kontrol etmiyorum ama başkası kullanmak isteyebilir, bu yüzden nasıl yapabilirim? çalışıyor mu? – Ilja

cevap

16

Yani örnek olacak yayılmış operatörü

let {propOne, propTwo, ...leftOver} = this.props; 
// `leftOver` contains everything except `propOne` and `propTwo` 

kullanın:

const {propOne, propTwo, children, ...props} = this.props; 
<Component propOne={propOne} propTwo={propTwo} {...props}> 
    {children} 
</Component> 
0

onları Filtre prop çoğaltılmasıyla ilgili değilim ki?

function without(props, keys) { 
    return Object.keys(props) 
    .filter((key) => keys.indexOf(key) !== -1) 
    .reduce((retVal, key) => { 
     retVal[key] = props[key]; 
    }, {}); 
} 

<Component propOne={this.props.one} propTwo={this.props.two} {...without(this.props, ['one', 'two'])} > 
    {this.props.children} 
</Component> 
İlgili konular