React 조건 렌더링 상세 정보
React의 조건 렌더링은 JavaScript의 조건과 일치합니다. JavaScript 조작부호if 또는 조건 연산자를 사용하여 현재 상태를 나타내는 요소를 만들고 그에 따라 UI를 업데이트합니다.
먼저 두 구성 요소를 살펴보겠습니다.
function UserGreeting(props) {
return <h1> !</h1>;
}
function GuestGreeting(props) {
return <h1> 。</h1>;
}
로그인 여부에 따라 다음 중 하나를 표시하는 Greeting 구성 요소를 만듭니다.
function Greeting(props) {
const isLoggedIn = props.isLoggedIn;
if (isLoggedIn) {
return <UserGreeting />;
}
return <GuestGreeting />;
}
ReactDOM.render(
// isLoggedIn={true}:
<Greeting isLoggedIn={false} />,
document.getElementById('example')
);
요소 변수너는 변수를 사용하여 원소를 저장할 수 있다.이것은 조건부 렌더링 구성 요소의 일부분을 도와줄 수 있으며, 출력된 다른 부분은 변경되지 않습니다.
다음 예에서 LoginControl이라는 상태 있는 구성 요소를 만들 것입니다.
이것은 현재 상태에 따라
<LoginButton />
또는 <LogoutButton />
를 렌더링하고 앞의 예<Greeting />
도 렌더링합니다.
class LoginControl extends React.Component {
constructor(props) {
super(props);
this.handleLoginClick = this.handleLoginClick.bind(this);
this.handleLogoutClick = this.handleLogoutClick.bind(this);
this.state = {isLoggedIn: false};
}
handleLoginClick() {
this.setState({isLoggedIn: true});
}
handleLogoutClick() {
this.setState({isLoggedIn: false});
}
render() {
const isLoggedIn = this.state.isLoggedIn;
let button = null;
if (isLoggedIn) {
button = <LogoutButton onClick={this.handleLogoutClick} />;
} else {
button = <LoginButton onClick={this.handleLoginClick} />;
}
return (
<div>
<Greeting isLoggedIn={isLoggedIn} />
{button}
</div>
);
}
}
ReactDOM.render(
<LoginControl />,
document.getElementById('example')
);
연산자 & &JSX에 어떤 표현식도 삽입할 수 있고, 자바스크립트의 논리와 & & 를 포함하여 코드를 괄호로 감싸면 요소를 쉽게 렌더링할 수 있습니다.
function Mailbox(props) {
const unreadMessages = props.unreadMessages;
return (
<div>
<h1>Hello!</h1>
{unreadMessages.length > 0 &&
<h2>
{unreadMessages.length} 。
</h2>
}
</div>
);
}
const messages = ['React', 'Re: React', 'Re:Re: React'];
ReactDOM.render(
<Mailbox unreadMessages={messages} />,
document.getElementById('example')
);
JavaScript에서는 true && expression
은 항상 expression으로 돌아가고 false && expression
은 false로 돌아갑니다.따라서, 조건이true라면, & & 오른쪽의 요소가 렌더링되고, false라면, React는 무시하고 건너뜁니다.
삼목 연산자
조건 렌더링의 또 다른 방법은 JavaScript의 조건 연산자를 사용하는 것입니다.
condition ? true : false。
아래의 예에서, 우리는 그것을 이용하여 조건부 텍스트를 조금 과장한다.render() { const isLoggedIn = this.state.isLoggedIn; return (
The user is {isLoggedIn ? 'currently' : 'not'} logged in.
); }
직관적이지는 않지만 큰 표현식에서도 사용할 수 있습니다.
render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
{isLoggedIn ? (
<LogoutButton onClick={this.handleLogoutClick} />
) : (
<LoginButton onClick={this.handleLoginClick} />
)}
</div>
);
}
어셈블리 렌더링 차단극소수의 경우, 다른 구성 요소에 의해 과장되어도 구성 요소를 숨기기를 원할 수도 있습니다.렌더 방법을null로 되돌려줍니다. 렌더링 결과가 아닌 null로 되돌려줍니다.
다음 예에서
<WarningBanner />
속성 warn의 값 조건에 따라 렌더링합니다.Warn 값이 false이면 구성 요소가 렌더링되지 않습니다.
function WarningBanner(props) {
if (!props.warn) {
return null;
}
return (
<div className="warning">
!
</div>
);
}
class Page extends React.Component {
constructor(props) {
super(props);
this.state = {showWarning: true}
this.handleToggleClick = this.handleToggleClick.bind(this);
}
handleToggleClick() {
this.setState(prevState => ({
showWarning: !prevState.showWarning
}));
}
render() {
return (
<div>
<WarningBanner warn={this.state.showWarning} />
<button onClick={this.handleToggleClick}>
{this.state.showWarning ? ' ' : ' '}
</button>
</div>
);
}
}
ReactDOM.render(
<Page />,
document.getElementById('example')
);
구성 요소의render 방법이null을 되돌려주는 것은 이 구성 요소의 생명주기 방법의 리셋에 영향을 주지 않습니다.예를 들어componentWill Update와componentDid Update는 여전히 호출될 수 있습니다.이상은 React 조건 렌더링에 대한 상세한 내용입니다. React 조건 렌더링에 대한 더 많은 자료는 저희의 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바삭바삭하고 간단한 결제 페이지 만들기먼저 Next.js에서 프로젝트를 만듭니다. Vercel & Next.js가 매우 편하기 때문에 최근에는이 구성을 사용하고 있습니다. 그런 다음 Tailwind CSS를 넣습니다. Tailwind CSS를 사용하면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.