gpt4 book ai didi

javascript - React JS 中不同组件之间如何共享状态?

转载 作者:行者123 更新时间:2023-11-30 15:30:14 28 4
gpt4 key购买 nike

我想创建下拉组件。

当我点击 DropdownHandler组件,我想保存状态 isOpen这可以是 truefalse .如果true , 同样的 state<DropdownContent/> 使用显示内容。默认情况下,state isOpenfalse<Dropdown />组件

请问我该怎么做?

应用程序.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;

下拉.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>
);
}

}

最佳答案

如果你不想使用 redux。您设置和控制子组件的 opend 状态,并使用 Prop 将其设置为 DropdownContent。因此,当您通过单击 DropdownHandler 更改打开时,您的 DropdownContent 将收到新的提示并调用重新渲染。

import React from 'react';
import {Dropdown, DropdownHandler, DropdownContent} from '../../components/Dropdown/Dropdown.jsx';

class HeaderConnected extends React.Component {

constructor(props) {
super(props);
this.state = {
opened: false
}
}
onClick(){
let condition = this.state.opened;
this.setState({opened: !condition });
}
render() {
return (
<div>
<Dropdown>
<DropdownHandler onClick={this.onClick.bind(this)}>
<Avatar title="Roberto"></Avatar>
</DropdownHandler>
<DropdownContent opened={this.state.opened}>
<li>Menu</li>
<li>Settings</li>
</DropdownContent>
</Dropdown>
</div>
);
}

}

export default HeaderConnected;

关于javascript - React JS 中不同组件之间如何共享状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372992/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com