ReactJS如何在Map函数内部使用ref?

sir*_*ver 7 css ref reactjs

我正在通过数组映射,并且为每个项目显示一个带有文本的按钮。假设我希望单击按钮,下面的文本会将其颜色更改为红色。如何定位按钮的同级?我尝试使用ref,但是由于它是映射的jsx,因此只会声明最后一个ref元素。

这是我的代码:

class Exams extends React.Component {
    constructor(props) {
        super()
        this.accordionContent = null;
    }
    state = {
        examsNames: null, // fetched from a server
    }
    accordionToggle = () => {
        this.accordionContent.style.color = 'red'
    }
    render() {
        return (
            <div className="container">
                {this.state.examsNames && this.state.examsNames.map((inst, key) => (
                    <React.Fragment key={key}>
                        <button onClick={this.accordionToggle} className="inst-link"></button>
                        <div ref={accordionContent => this.accordionContent = accordionContent} className="accordionContent">
                            <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Aperiam, neque.</p>
                        </div>    
                    </React.Fragment>
                ))}
            </div>
        )
    }
}


export default Exams;
Run Code Online (Sandbox Code Playgroud)

如所解释的,结果是在每次单击按钮时,将定位到最后一个按钮所附的段落。

提前致谢

Pra*_*rma 7

初始化this.accordionContent为数组

constructor(props) {
    super()
    this.accordionContent =[];
}
Run Code Online (Sandbox Code Playgroud)

ref像这样设置

<div ref={accordionContent => this.accordionContent[key] = accordionContent} className="accordionContent">
Run Code Online (Sandbox Code Playgroud)