반응형
반응 - 다른 구성 요소에 상태를 전달하는 방법
다른 컴포넌트에 상태 변경을 통지하는 방법을 찾고 있습니다.예를 들어 App.jsx, Header.jsx 및 SidebaPush.jsx의 3가지 컴포넌트가 있으며 단순히 onClick으로 클래스를 전환하려고 합니다.
따라서 Header.jsx 파일을 클릭하면 버튼이 2개 표시됩니다.이 경우 상태는 true 또는 false로 바뀝니다.다른 2개의 컴포넌트 App.jsx와 Header.jsx는 이러한 상태 변경에 대해 알아야 합니다.이러한 상태가 변경될 때마다 클래스를 전환할 수 있습니다.
App.jsx
import React from 'react';
import Header from 'Header';
import classNames from "classnames";
import SidebarPush from 'SidebarPush';
import PageWrapper from 'PageWrapper';
var MainWrapper = React.createClass({
render: function() {
return (
<div className={classNames({ 'wrapper': false, 'SidebarPush-collapsed': !this.state.sidbarPushCollapsed })}>
<Header/>
<SidebarPush/>
<PageWrapper>
{this.props.children}
</PageWrapper>
</div>
);
}
});
module.exports = MainWrapper;
Header.jsx
import React from 'react';
import ReactDom from 'react-dom';
class Header extends React.Component {
constructor() {
super();
this.state = {
sidbarPushCollapsed: false,
profileCollapsed: false
};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState({
sidbarPushCollapsed: !this.state.sidbarPushCollapsed,
profileCollapsed: !this.state.profileCollapsed
});
}
render() {
return (
<header id="header">
<ul>
<li>
<button type="button" id="sidbarPush" onClick={this.handleClick} profile={this.state.profileCollapsed}>
<i className="fa fa-bars"></i>
</button>
</li>
<li>
<button type="button" id="profile" onClick={this.handleClick}>
<i className="icon-user"></i>
</button>
</li>
</ul>
<ul>
<li>
<button id="sidbarOverlay" onClick={this.handleClick}>
<i className="fa fa-indent"></i>
</button>
</li>
</ul>
</header>
);
}
};
module.exports = Header;
사이드바 Push.jsx
import React from 'react';
import ReactDom from 'react-dom';
import classNames from "classnames";
class SidebarPush extends React.Component {
render() {
return (
<aside className="sidebarPush">
<div className={classNames({ 'sidebar-profile': true, 'hidden': !this.state.pagesCollapsed })}>
....
</div>
<nav className="sidebarNav">
....
</nav>
</aside>
);
}
}
export default SidebarPush;
모든 주(州)와 주(州)를handleClick
에서 기능하다Header
고객님께MainWrapper
요소.
그런 다음 이 기능을 공유할 필요가 있는 모든 컴포넌트에 값을 소품으로 전달합니다.
class MainWrapper extends React.Component {
constructor() {
super();
this.state = {
sidbarPushCollapsed: false,
profileCollapsed: false
};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState({
sidbarPushCollapsed: !this.state.sidbarPushCollapsed,
profileCollapsed: !this.state.profileCollapsed
});
}
render() {
return (
//...
<Header
handleClick={this.handleClick}
sidbarPushCollapsed={this.state.sidbarPushCollapsed}
profileCollapsed={this.state.profileCollapsed} />
);
그런 다음 헤더의 render() 메서드에서this.props
:
<button type="button" id="sidbarPush" onClick={this.props.handleClick} profile={this.props.profileCollapsed}>
언급URL : https://stackoverflow.com/questions/38689648/react-how-to-pass-state-to-another-component
반응형
'source' 카테고리의 다른 글
create-react-app에서 빌드 실행 후 공백 페이지 (0) | 2023.03.18 |
---|---|
directive link 함수에 ng-click을 동적으로 추가합니다. (0) | 2023.03.13 |
WordPress 다중 사이트용 h2o webserver mruby 핸들러는 어떻게 작성합니까? (0) | 2023.03.13 |
워드프레스로 이미지 캡션을 가져오는 기능이 있나요? (0) | 2023.03.13 |
Wordpress 관리자 URL 변경 (0) | 2023.03.13 |