【发布时间】:2016-12-23 15:04:59
【问题描述】:
我有一个简单的模态:
renderModalForm() {
return (
<Modal
closeTimeoutMS={150}
show={this.state.isModalOpen}
onHide={this.isModalOpen.bind(this)}
>
<Modal.Body>
<div className="close-button-modal">
<i className="fa fa-times fa-2x pull-right" onClick={this.onButtonClick.bind(this)}></i>
<div className="clearfix"></div>
</div>
<div ref="test" className="testclassname">
</div>
</Modal.Body>
</Modal>
);
}
我的唯一目标是向ref="test" 引用的div 注入一个自定义属性(很遗憾,它不能以 data- 或 aria- 开头,因为它是由第三方定义的)
当我尝试注入自定义属性时:
someButtonClicked() {
setTimeout(() => {
this.setState({
isModalOpen: true
})
}, 100);
var element = ReactDOM.findDOMNode(this.refs.test);
element.setAttribute('doku-div', 'form-payment');
}
这里的元素总是未定义的,所以setAttribute失败了;如果我去检查元素,ref="test" 不存在 <div> !有人可以帮我解释一下为什么模态中缺少这个 ref 吗?
【问题讨论】:
-
所以打开模式的 setState 实际上也是在 buttonClickHandler 方法中调用的。所以我不能在 componentDidMount 中移动它
标签: javascript reactjs modal-dialog react-bootstrap react-dom