【发布时间】:2019-06-15 12:18:04
【问题描述】:
我有一个组成网格的组件循环,我希望某些实例通过添加一个类来触发背景颜色更改。
This 问题给了我一些想法,但我还没有让它们发挥作用。
我有这个基本的标记。
<div className={`box ${(this.state.backgroundColor ? 'backgroundColor' : null)}`} key={i}>
</div>
我有一个索引数组,表示我希望更改颜色的组件实例
let indexes = [101, 178, 232, 545]
目前我正在通过document.querySelector('.box:nth-of-type(101') 使用纯 JS 进行此操作,但由于此方法绕过了 React,我想更改它。
基于另一个问题,我尝试创建一个包含所有组件的数组并将其设置为状态,然后循环并使用索引。我不知道如何像这样“访问”组件并获取$$typeof: Symbol(react.element) etc
let compArr = []
this.arr.map((i) => {
compArr.push(
<div className={`box ${(this.state.backgroundColor ? 'backgroundColor' : null)}`} key={i}>
</div>
)
})
this.setState({
compArr: compArr
})
然后循环遍历索引:
indexes.map(index => {
this.state.compArr[index] ===> ??stuck here??
})
预期输出:所以在一个包含三个实例的数组上,假设我希望第二个实例只有 backgroundColor 的类:
<div className='box' </div>
<div className='box backgroundColor'</div>
<div className='box'</div>
仅在我的情况下,我希望实例与 indexes 数组相关
在数组中的那些实例中,如何将条件类设置为true?假设我总共有 500 多个实例。
【问题讨论】:
-
你能分享更多关于你的预期输出的细节吗?
-
什么是索引?为什么不直接遍历 compArr ?
-
@Justcode 已更新为预期输出。这有帮助吗?
-
@MoteZart 我认为在这种情况下您不应该使用数组,您应该使用键值对,其中键可以是您想要更改颜色的索引和
<div className={框 ${(this.state.backgroundColor ? 'backgroundColor' : null)}} key={i}> </div>可能是值 -
标签: reactjs