如何隐藏和显示列表内容:ReactJS
我有一个项目列表,如果点击一个项目,它将显示其内容。我需要在state对象中为每个列表项添加一个如何隐藏和显示列表内容:ReactJS,reactjs,Reactjs,我有一个项目列表,如果点击一个项目,它将显示其内容。我需要在state对象中为每个列表项添加一个布尔值,还是可以像在jquery中那样使用add和removeclassname 代码: <ul> <li> item <div className="hidden"> some extra text ... </div> </li> <li> item <div className="hidden"> so
布尔值
,还是可以像在jquery
中那样使用add和removeclassname
代码:
<ul>
<li> item <div className="hidden"> some extra text ... </div> </li>
<li> item <div className="hidden"> some extra text ... </div> </li>
<li> item <div className="hidden"> some extra text ... </div> </li>
<li> item <div className="hidden"> some extra text ... </div> </li>
</ul>
- 项目一些额外的文本李>
- 项目一些额外的文本李>
- 项目一些额外的文本李>
- 项目一些额外的文本李>
我是否需要在状态对象中为每个列表项指定一个布尔值
是的,您需要为状态
变量中的每个列表项维护一个布尔值
,并基于该状态
值,呈现列表
项的内容,尝试以下操作:
this.state = {showItems: []}
onClick(index){
console.log(index);
let showItems = this.state.showItems.slice();
showItems[index] = !showItems[index];
this.setState({showItems});
}
<ul>
<li onClick={this.onClick.bind(this,0)}> item {this.state.showItems[0] ? <div> some extra text ... </div> : null} </li>
<li onClick={this.onClick.bind(this,1)}> item {this.state.showItems[1] ? <div> some extra text ... </div> : null}</li>
<li onClick={this.onClick.bind(this,2)}> item{this.state.showItems[2] ? <div> some extra text ... </div> : null} </li>
<li onClick={this.onClick.bind(this,3)}> item {this.state.showItems[3] ? <div> some extra text ... </div> : null}</li>
</ul>
我是否需要在状态对象中为每个列表项指定一个布尔值
是的,您需要为状态
变量中的每个列表项维护一个布尔值
,并基于该状态
值,呈现列表
项的内容,尝试以下操作:
this.state = {showItems: []}
onClick(index){
console.log(index);
let showItems = this.state.showItems.slice();
showItems[index] = !showItems[index];
this.setState({showItems});
}
<ul>
<li onClick={this.onClick.bind(this,0)}> item {this.state.showItems[0] ? <div> some extra text ... </div> : null} </li>
<li onClick={this.onClick.bind(this,1)}> item {this.state.showItems[1] ? <div> some extra text ... </div> : null}</li>
<li onClick={this.onClick.bind(this,2)}> item{this.state.showItems[2] ? <div> some extra text ... </div> : null} </li>
<li onClick={this.onClick.bind(this,3)}> item {this.state.showItems[3] ? <div> some extra text ... </div> : null}</li>
</ul>
这是一个非常简单易用的库,它允许您定义类名的条件。图书馆也被称为 例如:
import classNames from 'classnames'
<li> item
<div className={ classNames({
'some-static-classname' : true,
'hidden' : this.state.hiddenItems.includes('itemX')
}) }
>
some extra text ...
</div>
</li>
从“classNames”导入类名
项目
一些额外的文本。。。
因此,这个库只对减少您的条件下的样板文件有用。您还需要保留隐藏/显示项目的数据。您可以将这种状态保持在react内部状态。那就把你的条件写下来
我回答了另一个类似的问题。希望能有帮助 这里有一个非常简单易用的库,它允许您定义类名的条件。图书馆也被称为 例如:
import classNames from 'classnames'
<li> item
<div className={ classNames({
'some-static-classname' : true,
'hidden' : this.state.hiddenItems.includes('itemX')
}) }
>
some extra text ...
</div>
</li>
从“classNames”导入类名
项目
一些额外的文本。。。
因此,这个库只对减少您的条件下的样板文件有用。您还需要保留隐藏/显示项目的数据。您可以将这种状态保持在react内部状态。那就把你的条件写下来
我回答了另一个类似的问题。希望能有帮助 我认为您应该使用react引导。否则,您可以使用状态并手动更新它
const accordionInstance = (
<Accordion>
<Panel header="Collapsible Group Item #1" eventKey="1">
test
</Panel>
<Panel header="Collapsible Group Item #2" eventKey="2">
test 1
</Panel>
<Panel header="Collapsible Group Item #3" eventKey="3">
test 2
</Panel>
</Accordion>
);
ReactDOM.render(accordionInstance, mountNode);
常数一致性=(
我认为您应该使用react引导。否则您可以使用状态并手动更新它
const accordionInstance = (
<Accordion>
<Panel header="Collapsible Group Item #1" eventKey="1">
test
</Panel>
<Panel header="Collapsible Group Item #2" eventKey="2">
test 1
</Panel>
<Panel header="Collapsible Group Item #3" eventKey="3">
test 2
</Panel>
</Accordion>
);
ReactDOM.render(accordionInstance, mountNode);
常数一致性=(