在过去的几个小时里,我一直在尝试寻找一种方法来使 React 组件可拖动和可调整大小。我找到了一种使用 react drag and drop 使其可拖动的方法,但我找不到一种简单的方法来调整它的大小:/ 有没有人有关于如何使组件可拖动和可调整大小的经验?
感谢任何帮助或指点!
最佳答案
使用react-grid-layout来解决这个问题。专门用于日程安排小部件,用户可以在其中缩放时间 block 并沿水平时间线拖放它们。
react-grid-layout 提供了一个网格,其中包含可拖动和可调整大小的小部件以及响应式布局、可选的自动打包以及其他功能。
var ReactGridLayout = require('react-grid-layout');
// React component render function:
render: function() {
return (
<ReactGridLayout className="layout" cols={12} rowHeight={30}>
<div key={1} _grid={{x: 0, y: 0, w: 1, h: 2}}>1</div>
<div key={2} _grid={{x: 1, y: 0, w: 1, h: 2}}>2</div>
<div key={3} _grid={{x: 2, y: 0, w: 1, h: 2}}>3</div>
</ReactGridLayout>
)
}
子节点可拖动且可调整大小。每个子“_grid”属性中定义的布局也可以直接在父“layout”属性上定义:
// React component render function:
render: function() {
// layout is an array of objects, see the demo
var layout = getOrGenerateLayout();
return (
<ReactGridLayout className="layout" layout={layout} cols={12} rowHeight={30}>
<div key={1}>1</div>
<div key={2}>2</div>
<div key={3}>3</div>
</ReactGridLayout>
)
}
回调函数可以作为 props 传递给组件。挂接到这些应该允许您定义任何自定义行为:
// Calls when drag starts.
onDragStart: React.PropTypes.func,
// Calls on each drag movement.
onDrag: React.PropTypes.func,
// Calls when drag is complete.
onDragStop: React.PropTypes.func,
// Calls when resize starts.
onResizeStart: React.PropTypes.func,
// Calls when resize movement happens.
onResize: React.PropTypes.func,
// Calls when resize is complete.
onResizeStop: React.PropTypes.func
来自文档的代码示例: https://github.com/STRML/react-grid-layout
演示在这里: https://strml.github.io/react-grid-layout/examples/0-showcase.html
关于javascript - reactjs 可拖动和可调整大小的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640500/