ReactJS에서 조건부 렌더링 이해하기
9700 단어 webdevprogrammingreactjavascript
조건부 렌더링은 JavaScript에서와 똑같이 작동합니다. 조건부 연산자를 사용하여 현재 상태를 나타내는 요소를 만들고 React가 UI를 업데이트하도록 합니다.
function UserGreeting(props) {
return <h1>Welcome Back!</h1>
}
function GuestGreeting(props) {
return <h1>Please sign up.</h1>
}
이 두 가지 구성 요소를 고려하십시오
조건에 따라 이들 중 하나를 표시하는 인사말 구성 요소를 만듭니다.
function Greeting(props) {
const isLoggedIn props.isLoggedIn
if (isLoggedIn) {
return <UserGreeting />
} else {
return <GuestGreeting />
}
}
const root = ReactDOM.createRoot(document.getElementById('root'))
// Try changing to isLoggedIn={true}
root.render(<Greeting isLoggedIn={false} />)
isLoggedIn={false}인 경우 출력은 Please sign up..입니다.
isLoggedIn={true}인 경우 출력은 Welcome Back!입니다.
변수를 사용하여 요소를 저장할 수 있습니다. 이렇게 하면 나머지 출력을 변경하지 않고 구성 요소의 일부를 조건부로 렌더링하는 데 도움이 될 수 있습니다. 로그아웃 및 로그인 버튼을 나타내는 이 두 구성 요소를 고려하십시오.
// Login Button
function LoginButton(props) {
return (
<button onClick={props.onClick}>
Login
</button>
)
}
// Logout Button
function LogoutButton(props) {
return (
<button onClick={props.onClick}>
Logout
</button>
)
}
일부 상태를 유지하는 구성 요소, 즉 상태 저장 구성 요소를 만들고 이름을 LoginControl로 지정해 보겠습니다. 이것은 현재 상태와 이전 예제에 따라 OR을 렌더링합니다.
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: true})
}
root.render(<LoginControl />)
render() {
const isLoggedIn = this.state.isLoggedIn
let button
if (isLoggedIn) {
button = <LogoutButton onClick = {this.handleLogoutClick} />
} else {
button = <LoginButton onClick = {this.handleLoginClick} />
}
return (
<div>
<Greeting isLoggedIn = {isLoggedIn} />
{button}
</div>
)
}
}
운동
위의 코드를 실행하고 결과가 무엇인지 확인하십시오.
저를 믿으세요, 당신은 그것을 좋아할 것입니다 💖
Reference
이 문제에 관하여(ReactJS에서 조건부 렌더링 이해하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mursalfk/demystifying-conditional-rendering-in-reactjs-40if텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)