css - Reactjs 如何在 map 函数中使用 ref?

标签 css reactjs ref

我通过一个数组进行映射,并为每个元素显示一个带有文本的按钮。假设我希望在单击按钮时,下面的文本会将其颜色更改为红色。我如何定位按钮的同级?我尝试使用 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;

如前所述,结果是每次单击按钮时,最后一个按钮所附的段落将被定位。

提前致谢

最佳答案

this.accordionContent初始化为数组

constructor(props) {
    super()
    this.accordionContent =[];
}

然后像这样设置ref

<div ref={accordionContent => this.accordionContent[key] = accordionContent} className="accordionContent">

关于css - Reactjs 如何在 map 函数中使用 ref?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54314945/

相关文章:

css - Bootstrap 滚动 spy 链接事件未应用

javascript - 以 props 和 state 作为参数的 React 类组件渲染函数

javascript - 使用 ramda sortWith 进行不区分大小写的排序

javascript - 通过一个 ref 访问多个元素 React

C# 'ref' 关键字,性能

带有 ref/指针参数的 C# 反射调用方法

javascript - 偏移目标 div Bootstrap

html - 使用 z-index 的 CSS 不会将子元素放在其父元素后面

jquery - 如何更改 jQuery Skitter 幻灯片的宽度和高度?

reactjs - (0 , _helperModuleTransforms.getModuleName) 不是一个函数 - React Native