스택큐힙리스트

{this.props.children}에 props를 전달하는 방법 본문

카테고리 없음

{this.props.children}에 props를 전달하는 방법

스택큐힙리스트 2023. 12. 25. 07:48
반응형

저는 일반적인 방식으로 사용할 수 있는 몇 가지 구성 요소를 정의하는 적절한 방법을 찾고 있습니다:


<Parent>
<Child value=1>
<Child value=2>
</Parent>

물론 부모 및 자식 구성 요소 간에 렌더링을 위한 로직이 진행되고 있습니다. 이 로직의 예로 <select><option>을 생각해 볼 수 있습니다.


이 질문의 목적을 위한 더미 구현이 다음과 같습니다:


var Parent = React.createClass({
doSomething: function(value) {
},
render: function() {
return (<div>{this.props.children}</div>);
}
});
var Child = React.createClass({
onClick: function() {
this.props.doSomething(this.props.value); // doSomething은 정의되지 않았습니다
},
render: function() {
return (<div onClick={this.onClick}></div>);
}
});

질문은 래퍼 컴포넌트를 정의할 때 {this.props.children}을 사용할 때, 어떻게 모든 자식들에게 일부 속성을 전달할까요?

답변 1

자식을 함수로 호출하기


또는, 렌더 프롭스를 통해 자식에게 props를 전달할 수도 있습니다. 이 접근 방식에서 children (또는 다른 prop 이름일 수도 있음)은 실제로 전달하려는 인수를 받을 수 있는 함수입니다:



const Child = ({ childName, sayHello }) => (
<button onClick={() => sayHello(childName)}>{childName}</button>
);
function Parent({ children }) {
function sayHello(childName) {
console.log('안녕, '+childName+'이야');
}
return <div>{children(sayHello)}</div>
}
function App() {
return (
<Parent>
{(sayHello) => (
<>
<Child childName=빌리 sayHello={sayHello} />
<Child childName=밥 sayHello={sayHello} />
</>
)}
</Parent>
);
}
ReactDOM.render(<App />, document.getElementById(container));

<script src=https://unpkg.com/react@17/umd/react.production.min.js></script>
<script src=https://unpkg.com/react-dom@17/umd/react-dom.production.min.js></script>
<div id=container></div>


답변 2

어떻게 {this.props.children}에 props를 전달할까요? 이 주제에 대한 SEO 친화적인 한국어 에세이를 작성해보겠습니다.
React는 효과적이고 유연한 웹 애플리케이션 구축을 도와주는 인기 있는 자바스크립트 라이브러리입니다. React에서는 컴포넌트를 사용하여 화면의 작은 조각을 구성하고 이들을 모아서 원하는 대로 조립할 수 있습니다. 이러한 컴포넌트들은 부모 컴포넌트에서 자식 컴포넌트로 다양한 데이터를 전달할 수 있는데, 이때 가장 널리 사용되는 방법은 props를 이용하는 것입니다.
React에서, {this.props.children}은 부모 컴포넌트에서 자식 컴포넌트에 포함된 모든 내용을 가리킵니다. 이 방법을 사용하면 부모 컴포넌트의 UI에서 자식 컴포넌트를 동적으로 변경하거나 우아하게 조작할 수 있습니다. {this.props.children}에 props를 전달하려면 몇 가지 간단한 단계를 따라야 합니다.
첫 번째 단계는 부모 컴포넌트에서 자식 컴포넌트를 사용하는 부분을 찾는 것입니다. 일반적으로 이 부분은 JSX로 작성되며, props를 전달할 자식 컴포넌트를 <자식컴포넌트> 태그로 감싸는 방식으로 구성됩니다.
예를 들어, 부모 컴포넌트에서 버튼 컴포넌트를 사용하고, 버튼에 특정 문구를 전달하고 싶다고 가정해보겠습니다. 다음과 같이 코드를 작성할 수 있습니다.
```jsx
<버튼컴포넌트>전달할 텍스트
```
두 번째 단계는 자식 컴포넌트에서 props를 받을 준비를 하는 것입니다. 자식 컴포넌트에서는 props를 인자로 받을 수 있는 함수형 컴포넌트나 클래스 컴포넌트를 작성해야 합니다. 클래스 컴포넌트를 사용하는 경우, 전달된 내용은 `this.props.children`으로 참조할 수 있습니다.
```jsx
class 버튼컴포넌트 extends React.Component {
render() {
return (

);
}
}
```
이렇게 작성된 버튼 컴포넌트는 부모 컴포넌트에서 전달한 텍스트(`전달할 텍스트`)를 출력합니다.
마지막으로, 부모 컴포넌트에서는 필요한 내용을 포함한 `<버튼컴포넌트>` 태그를 작성하면 됩니다. 이때, `<버튼컴포넌트>` 태그 내에 작성한 내용은 자동으로 자식 컴포넌트의 `this.props.children`으로 전달됩니다.
본질적으로, 이 과정은 컴포넌트 간에 데이터를 전달할 수 있도록 React의 자체 메커니즘을 활용하는 것입니다. {this.props.children}을 사용하면 부모 컴포넌트는 자식 컴포넌트를 캡슐화하고, 더 큰 유연성과 재사용성을 달성할 수 있습니다.
{this.props.children}에 props를 전달하기 위한 간단한 과정을 살펴보았습니다. React에서의 컴포넌트 기반 개발을 위해서는 이러한 방법을 숙지해야 합니다. 컴포넌트 간 상호작용은 웹 애플리케이션 개발에서 핵심적인 요소이므로, {this.props.children}의 활용법을 꼭 알아두시기 바랍니다.

반응형
Comments