У меня есть липкая панель инструментов, которую я хочу скрыть перед перетаскиванием, чтобы не закрывать верхнюю часть редактора, чтобы браузер мог запускать автоматическую прокрутку.
Проблема в том, что если я использую ondragstart
, чтобы скрыть его, перетаскивание текста перестает работать в некоторых случаях . Например, не получается перетащить последнюю строку вверх. Если вы прокрутите вниз, так что панель инструментов больше не будет видна, начнется перетаскивание той же строки.
См. Этот gif
class Container extends React.Component {
constructor(props) {
super(props);
this.state = {
v: new Array(20).fill(null).map((_, i) => 'line ' + i).join('\n'),
draggingInProgress: false,
};
}
render() {
return (
<div>
<div style={{background: 'wheat', height: 500}}></div>
<div
style={{border: '1px solid black', padding: 5}}
onDragStart={() => {
if (this.state.draggingInProgress !== true) {
this.setState({ draggingInProgress: true });
}
}}
onDragEnd={(e) => {
if (this.state.draggingInProgress !== false) {
this.setState({ draggingInProgress: false });
}
}}
>
{this.state.draggingInProgress !== true ? <div>TOOLBAR</div> : null}
<textarea style={{height: 400}}>{this.state.v}</textarea>
</div>
<div style={{background: 'wheat', height: 500}}></div>
</div>
);
}
}
ReactDOM.render(<Container />, document.getElementById('react-root'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="react-root"></div>