2017-01-08 6 views
9

내가 내 수업 기반 구성 요소가 필요하며, 구현은 내가 원래 기대하지 않는 다른 소품을 통과 얼마나다른 모든 소품을 반동 수업에 전달하는 방법은 무엇입니까?

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

를 즉,하지만 원하는 것이 내 구성 요소를 사용하여 다른 사람의 말을 그 3 개 소품을 말해봐 사용?

나는

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

생각하지만

+0

아마도이 도와 드릴까요? http://stackoverflow.com/a/32371612/340760 – BrunoLM

+0

@BrunoLM이 방법은 소품을 '어린이'에게 전달하는 방법을 보여줍니다. 내 질문에 묻는 질문은 * 예기치 않은 */* 다른 소품을 클래스 구성 요소에서받는 방법입니다. 즉, ''에있는 'id' prop를 확인하지 않고 있지만 다른 사람이 그것을 사용하려고 할 수 있습니다. 따라서 어떻게 만들 수 있습니까? 작동합니까? – Ilja

답변

16

그래서 귀하의 예제가 될 것 확산 운영자

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

을 사용

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

그들을 필터 소품 중복에 대해 걱정했다?

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>