【发布时间】:2019-05-02 18:01:04
【问题描述】:
我使用事件 onMouseMove 来跟踪我的鼠标坐标。当我将这些坐标作为道具发送到我的子组件并使用它们时,道具已经落后于我的实际鼠标坐标,但是当我尝试在我的主组件中使用它们时,它们是我的实际鼠标坐标。我可能在 componentDidUpdate 方法上犯了一个错误。有谁知道我的错误是什么?
主要组件
class Page extends React.Component {
state = {
XCoord: 0,
YCoord: 0
};
handleMouseMove = e => {
const XCoord = e.pageX;
const YCoord = e.pageY;
this.setState((state, props) => {
return { XCoord, YCoord };
});
};
render() {
const follower = this.refs.follower;
return (
<ThemeProvider theme={style}>
<div onMouseMove={e => this.handleMouseMove(e)} id="test">
<Head title="" />
<CreateGlobalStyle />
{this.props.children}
<Pointer coords={this.state} />
</div>
</ThemeProvider>
);
}
}
子组件
class Pointer extends React.Component {
componentDidUpdate(prevProps) {
this.positionElement(prevProps.coords.XCoord, prevProps.coords.YCoord);
}
positionElement = (x, y) => {
const mouse = {
x,
y
};
follower.style.top = mouse.y + "px";
return (follower.style.left = mouse.x + "px");
};
render() {
const follower = this.refs.follower;
return (
<Follower id="follower">
<Circle id="circle" />
</Follower>
);
}
}
【问题讨论】:
标签: javascript reactjs onmousemove