我使用react-bootstrap-sweetalert
lib创建了一个模态窗口。
它包含一长串内容,因此我允许使用overflow:scroll
。
问题是,当模式打开时,它不会滚动到顶部。
并滚动到未知位置,所以我需要手动滚动到顶部。
这是简单的代码
basicAlert = () => {
this.setState({
alert: (
<div>
// long list table
</div>)
});
}
hideAlert = () => {
this.setState({
alert: null
});
}
render() {
return (
{this.state.alert}
// rest contents ...
)
}
任何建议对我都会有很大帮助。 谢谢
答案 0 :(得分:0)
您可以为包装可滚动内容的组件中的元素创建一个ref
,然后在内容满足时使用此引用将scrollTop
设置为相应DOM元素的0
显示在您的模式中。
因此,例如,对组件进行以下添加/调整即可实现所需的功能:
// Add a constructor to create the ref
constructor(props) {
super(props)
// Add a component ref to your component. You'll use this to set scroll
// position of div wrapping content
this.componentRef = React.createRef();
}
basicAlert = () => {
this.setState({
alert: (
<div>
// long list table
</div>)
}, () => {
// After state has been updated, set scroll position of wrapped div
// to scroll to top
this.componentRef.current.scrollTop = 0;
});
}
render() {
// Register your ref with wrapper div
return (<div ref={ this.componentRef }>
{ this.state.alert }
// rest contents ...
</div>)
}