고급 Reactjs
11867 단어 reactwebdevbeginnersjavascript
이제 우리는 최상위 API를 사용하여 React에서 복합 구성 요소라는 다른 것을 배웁니다.
1.React.Children.map
2.React.cloneElement()
최종 출력은 아래 이미지와 같아야 합니다.
반응 아코디언
아코디언 컴포넌트 코드
<Accordion>
<Heading>Heading 1</Heading>
<Text>
“You've gotta dance like there's nobody watching, Love like you'll
never be hurt, Sing like there's nobody listening, And live like it's
heaven on earth.” ― William W. Purkey
</Text>
<Heading>Heading 2</Heading>
<Text>
“Don’t walk in front of me… I may not follow Don’t walk behind me… I
may not lead Walk beside me… just be my friend” ― Albert Camus
</Text>
<Heading>Heading 3</Heading>
<Text>
“Darkness cannot drive out darkness: only light can do that. Hate
cannot drive out hate: only love can do that.” ― Martin Luther King
Jr., A Testament of Hope: The Essential Writings and Speeches
</Text>
<Heading>Heading 4</Heading>
<Text>
Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam.
Integer ut neque. Vivamus nisi metus, molestie vel, gravida in,
condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi.
Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu
ante scelerisque vulputate.
</Text>
<Heading>Heading 5</Heading>
<Text>
“I believe that everything happens for a reason. People change so that
you can learn to let go, things go wrong so that you appreciate them
when they're right, you believe lies so you eventually learn to trust
no one but yourself, and sometimes good things fall apart so better
things can fall together.” ― Marilyn Monroe
</Text>
</Accordion>
이제 Accordion 구성 요소가 다른 유형의 하위 예제 제목, 텍스트를 보유하고 있는 위의 코드에서 로직을 살펴보겠습니다.
아코디언 구성 요소 구현.
class Accordion extends React.Component {
state = {
active: -1
};
onShow = i => {
this.setState({
active: i
});
};
render() {
const children = React.Children.map(this.props.children, (child, i) => {
return React.cloneElement(child, {
heading: this.state.active === i,
text: this.state.active + 1 === i,
onShow: () => this.onShow(i)
});
});
return <div className="accordion">{children}</div>;
}
}
위의 코드는 자식을 반환하는 대신 React.Children.map을 사용하여 자식을 매핑하고 일부 상태를 Children에 전달하여 자식을 복제하는 것입니다. 이는 상태를 자식에게 전달한다는 의미입니다.
제목 구성 요소.
class Heading extends React. Component {
render() {
const { heading, onShow, children } = this.props;
return (
<h2 className={heading ? "active" : "normal"} onClick={onShow}>
{children}
</h2>
);
}
}
문자 구성요소
class Text extends React.Component {
contentBox = () => {
if (!this.props.text) {
return null;
} else {
return (
<div className="content-box">
<p className="text">{this.props.children}</p>
</div>
);
}
};
render() {
return this.contentBox();
}
}
다른 예
Text 또는 Heading 구성 요소 내부에 상태가 없는 것을 보셨습니까?
여러분이 즐거우셨기를 바랍니다....
데모 URL
코드 저장소
Reference
이 문제에 관하여(고급 Reactjs), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/sait/advanced-reactjs--22lo
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class Text extends React.Component {
contentBox = () => {
if (!this.props.text) {
return null;
} else {
return (
<div className="content-box">
<p className="text">{this.props.children}</p>
</div>
);
}
};
render() {
return this.contentBox();
}
}
Reference
이 문제에 관하여(고급 Reactjs), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sait/advanced-reactjs--22lo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)