解决方法使用JSON.parse(JSON.stringify(variableObject))深拷贝一下需变动的数组,因为如果不拷贝map改变了数组(数组里的元素为引用类型),而react禁止改变props
getOnlineData = (roommates, onlineRoommates) => {
const newRoommates =JSON.parse(JSON.stringify(roommates))
return (newRoommates.map(item => {
onlineRoommates.map(element => {
if (`${item.user_type}:${item.user_id}` === element.userId) {
item.isOnline = true
item.hasVideo = element.hasVideo
item.hasAudio = element.hasAudio
}
})
return this.renderItem(item)
}))
}
render () {
const { roommates, onlineRoommates } = this.props
return (
<div className={styles.container}>
{this.getOnlineData(roommates, onlineRoommates)}
</div>
)
}