Reactjs에서 {… this.props}의 의미는 무엇입니까?


119

의 의미는 무엇입니까

{...this.props}

그렇게 사용하려고 해요

 <div {...this.props}> Content Here </div>

답변:


201

스프레드 속성 이라고 하며 그 목적은 소품 전달을 더 쉽게 만드는 것입니다.

N 개의 속성을 받아들이는 구성 요소가 있다고 가정 해 보겠습니다. 숫자가 증가하면 이러한 정보를 전달하는 것은 지루하고 다루기 어려울 수 있습니다.

<Component x={} y={} z={} />

따라서 대신 이것을 수행하고 객체로 감싸고 스프레드 표기법을 사용하십시오.

var props = { x: 1, y: 1, z:1 };
<Component {...props} />

이는 컴포넌트의 props로 압축을 풉니 다. 즉, props를 다른 컴포넌트로 전달할 때만 함수 {... props}내에서 "절대"사용하지 않습니다 render(). 포장을 푼 소품을 평소처럼 사용하십시오 this.props.x.


2
추가하기 만하면 this.transferPropsToReact 0.12.x에서 더 이상 사용되지 않고 0.13.x에서 제거 될 대체품으로 생각하는 데 도움 이 될 수 있습니다. 물론 그것은 그러나 단순히 번역 훨씬 더 고급 사용이 0.11.x의 반응 수 this.transferPropsTo(<Foo />)<Foo {...this.props} />그 변화를 만드는 사람들에게 가장 유용합니다.
Mike Driver

13
좋은 awnser, 그러나 '당신은 당신의 render () 함수 내에서 {... props}를 "절대"사용하지 않습니다. 오직 당신이 props를 다른 컴포넌트로 전달할 때만 가능합니다.' 매우 혼란스러운 문구입니다. 다시 작성하는 것이 좋습니다. "props를 다른 구성 요소로 전달할 때 render () 내에서만 {... props}를 사용합니다." 명확성을 위해.
dprogramz

17

ES6 Spread_operatorDestructuring_assignment.

<div {...this.props}>
  Content Here
</div>

다음과 같습니다. Class Component

const person = {
    name: "xgqfrms",
    age: 23,
    country: "China"
};

class TestDemo extends React.Component {
    render() {
        const {name, age, country} = {...this.props};
        // const {name, age, country} = this.props;
        return (
          <div>
              <h3> Person Information: </h3>
              <ul>
                <li>name={name}</li>
                <li>age={age}</li>
                <li>country={country}</li>
              </ul>
          </div>
        );
    }
}

ReactDOM.render(
    <TestDemo {...person}/>
    , mountNode
);

여기에 이미지 설명 입력


또는 Function component

const props = {
    name: "xgqfrms",
    age: 23,
    country: "China"
};

const Test = (props) => {
  return(
    <div
        name={props.name}
        age={props.age}
        country={props.country}>
        Content Here
        <ul>
          <li>name={props.name}</li>
          <li>age={props.age}</li>
          <li>country={props.country}</li>
        </ul>
    </div>
  );
};

ReactDOM.render(
    <div>
        <Test {...props}/>
        <hr/>
        <Test 
            name={props.name}
            age={props.age}
            country={props.country}
        />
    </div>
    , mountNode
);

여기에 이미지 설명 입력

심판


1

다음과 같이 컴파일됩니다.

React.createElement('div', this.props, 'Content Here');

위에서 볼 수 있듯이 모든 props를 div.


1

ES-6 기능입니다. 즉, 소품의 모든 속성을 div.{... }

연산자는 객체의 속성을 추출하는 데 사용됩니다.


1

자식 구성 요소에서 소품을 사용합니다.

예를 들면

지금 컴포넌트 소품이

{
   booking: 4,
   isDisable: false
}

이 소품을 자녀의 compoenet에서 사용할 수 있습니다.

 <div {...this.props}> ... </div>

자식 구성 요소에서 모든 부모 소품을 받게됩니다.


좋은 대답이지만 소품의 용도에 대한 설명을 포함하면 더 좋을 것입니다.
Mike Poole 19
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.