我有一个渲染多个实例的组件。每个元素都有一个打开模态的按钮。
请注意按钮内部的数据目标格式是“#varName”,在这种情况下,我从 {'#'+this.props.id} 获取 varName(这是一个长字符串,如..“5a1af3a7c7f04418b44d8c0b”)并使用相同的 id 作为按钮的名称,仅用于测试目的。
<button type="button" className="btn btn-primary btn-block" data-toggle="modal" data-target={'#'+this.props.id}>{this.props.id}</button>
{/*Modal Start*/}
<div className="modal fade" id={this.props.id} role="dialog">
<div className="modal-dialog modal-lg">
<div className="modal-content">
<div className="modal-header">
<button type="button" className="close" data-dismiss="modal">×</button>
<h4 className="modal-title">{this.props.name}</h4>
</div>
<div className="modal-body">
<p>This is a large modal.</p>
</div>
<div className="modal-footer">
<button type="button" className="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
{/* Modal end */}
照原样运行代码将显示一个模糊屏幕,就好像数据目标和模态内的 id 不同但它们不一样。
当使用像 data-target="#test" 和 id="test" 这样的硬编码数据时,模式适用于所有实例,但模式仅显示第一个实例的信息。
我在这件事上真的很难过。:(