我在map里传了一个onQRScreening方法,点击切换打开/关闭,但是点击一个,所有map出来的元素都会受影响,这该怎么解决
class Stuonline extends React.Component {
constructor(props) {
super(props);
this.state = {
QRScreening: false,
};
this.onQRScreening = this.onQRScreening.bind(this);
};
onQRScreening(text) {
this.setState(prevState => ({
QRScreening: !prevState.QRScreening
}))
//控制打开/关闭
if (this.state.QRScreening == true) {
//一些其它的操作
} else if (this.state.QRScreening == false) {
//一些其它的操作
}
}
render() {
const barrageList = this.props.barrageList || [];
const QRScreening = this.state.QRScreening;
const onQRScreening = this.onQRScreening;
return (
<div>
{barrageList.map(function (barrageList, index) {
const qqq = QRScreening ?
<div onClick={e => onQRScreening(barrageList.text)}>
<img src='' />
打开
//现在的问题是我传了一个onQRScreening方法进来,点击切换打开/显示
//但是所有map出来的都会一起被控制,怎么解决呢
</div>
:
<div onClick={onQRScreening}>
关闭
</div>
return (
<div key={index}>
<List>
<Item
extra={qqq}
>
{barrageList.text}
<Brief>{barrageList.uid}{barrageList.name}</Brief>
</Item>
</List>
</div>
)
})
}
</div>
);
}
}
因为你所有item的状态都是用QRScreening来判断的,解决方法:
大致代码如下(我用的react版本是15.4.2):