我想创建Dropdown组件。React JS中单独组件之间的共享状态如何?
当我点击DropdownHandler
组件时,我想保存的状态为isOpen
,可以是true
或false
。如果使用true
,则<DropdownContent/>
使用相同的state
来显示内容。而默认情况下,state
isOpen
是false
在<Dropdown />
组件
我怎么能做到这一点吗?
App.jsx
import React from 'react';
import {Dropdown, DropdownHandler, DropdownContent} from '../../components/Dropdown/Dropdown.jsx';
class HeaderConnected extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<Dropdown>
<DropdownHandler>
<Avatar title="Roberto"></Avatar>
</DropdownHandler>
<DropdownContent>
<li>Menu</li>
<li>Settings</li>
</DropdownContent>
</Dropdown>
</div>
);
}
}
export default HeaderConnected;
Dropdown.jsx
export class Dropdown extends React.Component {
constructor(props) {
super(props);
this.state = {
opened: false
}
}
render() {
return (
<div className="DROPDOWN">
{this.props.children}
</div>
);
}
}
export class DropdownHandler extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="DROPDOWN__HANDLER">
{this.props.children}
</div>
);
}
}
export class DropdownContent extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="DROPDOWN__CONTENT">
{this.props.children}
</div>
);
}
}
您可以使用[终极版](https://github.com/reactjs/react-redux)这一点。 – Andrew
阅读[提升状态](https://facebook.github.io/react/docs/lifting-state-up.html)和[反思中的思考](https://facebook.github.io/react/docs /thinking-in-react.html) - 他们解释了共享状态的习惯方式。 –