在 react-konva 中分配 ref
Assigning ref in react-konva
我们如何将 ref 分配给舞台或图层对象。我正在使用 react-konva。当我做 console.log(stageE1) 时,它说未定义。
useEffect(() => {
var stage = new Konva.Stage({
container: 'stage',
width: window.innerWidth,
height: window.innerHeight,
ref: stageEl, // not working
onMouseDown: (e) => {
// deselect when clicked on empty area
const clickedOnEmpty = e.target === e.target.getStage()
if (clickedOnEmpty) {
selectShape(null)
}
},
})
stage.container().style.border = '1px solid grey'
var layer = new Konva.Layer({
ref: layerEl, // not working
})
stage.add(layer)
}, [])
这不是 react-konva
用法。您正在直接使用 Konva API。如果这样做,您可能不需要使用 refs。但如果你真的想要:
var layer = new Konva.Layer();
// set ref
layerEl.current = layer;
如果你使用react-konva
,那么你应该用React方式定义组件:
import { Stage, Layer } from 'react-konva';
const App = () => {
const layerEl = React.useRef();
return <Stage><Layer ref={layerEl} /></Stage>;
};
我们如何将 ref 分配给舞台或图层对象。我正在使用 react-konva。当我做 console.log(stageE1) 时,它说未定义。
useEffect(() => {
var stage = new Konva.Stage({
container: 'stage',
width: window.innerWidth,
height: window.innerHeight,
ref: stageEl, // not working
onMouseDown: (e) => {
// deselect when clicked on empty area
const clickedOnEmpty = e.target === e.target.getStage()
if (clickedOnEmpty) {
selectShape(null)
}
},
})
stage.container().style.border = '1px solid grey'
var layer = new Konva.Layer({
ref: layerEl, // not working
})
stage.add(layer)
}, [])
这不是 react-konva
用法。您正在直接使用 Konva API。如果这样做,您可能不需要使用 refs。但如果你真的想要:
var layer = new Konva.Layer();
// set ref
layerEl.current = layer;
如果你使用react-konva
,那么你应该用React方式定义组件:
import { Stage, Layer } from 'react-konva';
const App = () => {
const layerEl = React.useRef();
return <Stage><Layer ref={layerEl} /></Stage>;
};