2017-01-08 12 views
9

Say mam 3 rekwizyty, że moja klasa komponent oparty wymaga i osprzęt tjJak przekazać wszystkie inne rekwizyty, aby zareagować na lekcje?

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

jak będę przechodzić w dół żadnych inne rekwizyty, że pierwotnie nie należy się spodziewać, ale że ktoś inny korzysta z mojego składnik chciałby używać?

Myślałam

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

Ale jestem zaniepokojony prop powielania

+0

Być może to pomóc? http://stackoverflow.com/a/32371612/340760 – BrunoLM

+0

@BrunoLM to wydaje się pokazywać, jak przekazywać rekwizyty do "dzieci". Moje pytanie brzmi: jak otrzymać jakiekolwiek * niespodziewane */* inne * rekwizyty w moim komponencie klasy, tzn. Nie sprawdzam 'id' propa w' 'ale ktoś inny może chcieć z niego skorzystać, stąd jak mogę zrobić działa? – Ilja

Odpowiedz

16

Użyj operatora spread

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

Więc Przykładem może stać się:

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

filtrować je?

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> 
Powiązane problemy