【发布时间】:2020-11-05 07:24:20
【问题描述】:
我正在寻找一种方法来隐藏一个 div,一旦单击其中的按钮并继续显示所有其他 div。
我尝试使用 setState 方法,但是当使用 onClick() 将其设置为 false 时,我的所有对象都消失了。
class App extends React.PureComponent {
state: {
notHidden: false,
}
constructor(props: any) {
super(props);
this.state = {search: '', notHidden: true};
this.hideObject = this.hideObject.bind(this)
}
hideThisDiv() {
this.setState({notHidden: false})
}
async componentDidMount() {
this.setState({
objects: await api.getObjects()
});
}
render = (objects: Object[]) => {
return ({Object.map((object) =>
<div key={index} className='class'>
<button className='hide' type='button' onClick={() => hideThisDiv()}>Hide</button>
<p>object.text</p>
</div>}
render() {
const {objects} = this.state;
return (<main>
<h1>Objects List</h1>
<header>
<input type="search" onChange={(e) => this.onSearch(e.target.value)}/>
</header>
{objects ? this.render(objects) : null}
</main>)
}
);
数据是一个 data.json 文件,其中填充了数组中的许多此类对象
{
"uuid": "dsfgkj24-sfg34-1r134ef"
"text": "Some Text"
}
编辑:抱歉问题问得不好,我是新手。
【问题讨论】:
-
请提供更多代码,而不仅仅是返回。我们需要查看您的“对象”以及您如何使用 useState
-
您需要为所有要“隐藏”的映射元素保留一个状态。然后,如果应该隐藏它,您可以有条件地呈现 null,或者先过滤您的状态,然后再映射。或者,您可以将显示/隐藏状态抽象为一个管理其自身可见性的组件。
() => hideThisDiv无效。请提供Minimal, Complete, and Reproducible 代码示例。
标签: javascript reactjs html-rendering