terra75
Member
Hallo zusammen,
arbeite seit einiger Zeit mit ReactJS aber bin da noch nicht so ganz drin. Vieles lese ich mir von anderen Beiträgen ab und komme so ganz gut zurecht.
Habe auch nebenher gelesen, das Klassen mehr Vorzuge haben als Funktionen und wollte daher ein Projekt Klassenbasiert umschreiben um zu schauen, wie ich damit klar komme und welche Möglichkeiten sich noch bieten.
Im großen und ganzem handelt es sich um ein sehr simplen Bildbearbeiter, der erstmal nur das eingelesene Foto mit der Maus hin und her schieben soll.
Eine Hauptkomponente ist die in dem useEffect erstellten Script:
Im Ursprünglichem Script funktioniert dieser ohne Probleme. Füge ich das ganze aber in den Klassen Updater ein und passe alles etwas an, dann haut der mir den Fehler raus, das "X" undefiniert ist.
Unten etwas mehr Code um den Zusammenhang zu verstehen.
Kann mir da wer weiterhelfen, das ich allgemein verstehe, was ich falsch mache?
In der Konsole wird mir folgender Fehler ausgespuckt: Cannot read properties of undefined (reading 'x') at mousemove.
Lieben Gruß,
Mark
arbeite seit einiger Zeit mit ReactJS aber bin da noch nicht so ganz drin. Vieles lese ich mir von anderen Beiträgen ab und komme so ganz gut zurecht.
Habe auch nebenher gelesen, das Klassen mehr Vorzuge haben als Funktionen und wollte daher ein Projekt Klassenbasiert umschreiben um zu schauen, wie ich damit klar komme und welche Möglichkeiten sich noch bieten.
Im großen und ganzem handelt es sich um ein sehr simplen Bildbearbeiter, der erstmal nur das eingelesene Foto mit der Maus hin und her schieben soll.
Eine Hauptkomponente ist die in dem useEffect erstellten Script:
Javascript:
useEffect(() => {
const mouseup = () => {
setPanning(false);
};
const mousemove = (event) => {
if (isPanning) {
setPosition({
...position,
x: Math.round(position.x + event.clientX - position.oldX),
y: Math.round(position.y + event.clientY - position.oldY),
oldX: event.clientX,
oldY: event.clientY,
});
}
};
window.addEventListener('mouseup', mouseup);
window.addEventListener('mousemove', mousemove);
return () => {
window.removeEventListener('mouseup', mouseup);
window.removeEventListener('mousemove', mousemove);
};
});
Im Ursprünglichem Script funktioniert dieser ohne Probleme. Füge ich das ganze aber in den Klassen Updater ein und passe alles etwas an, dann haut der mir den Fehler raus, das "X" undefiniert ist.
Unten etwas mehr Code um den Zusammenhang zu verstehen.
Javascript:
export default class PicEditor extends Component {
constructor(props) {
super(props);
this.state = {
panning: false,
image: {
width: 0,
height: 0,
src: null
},
position: {
oldX: 0,
oldY: 0,
x: 0,
y: 0,
z: 1,
}
};
};
componentDidMount() {
// noch nix vorhanden.
};
componentDidUpdate() {
const mouseup = () => {
this.setState({ panning: false });
};
const mousemove = (event) => {
if (this.state.panning) {
this.setState({
position: {
x: Math.round(this.position.x + event.clientX - this.position.oldX),
y: Math.round(this.position.y + event.clientY - this.position.oldY),
oldX: event.clientX,
oldY: event.clientY,
},
});
}
};
window.addEventListener('mouseup', mouseup);
window.addEventListener('mousemove', mousemove);
};
onMouseDown = (e) => {
e.preventDefault();
this.setState({
panning: true,
position: {
oldX: e.clientX,
oldY: e.clientY
}
})
};
Kann mir da wer weiterhelfen, das ich allgemein verstehe, was ich falsch mache?
In der Konsole wird mir folgender Fehler ausgespuckt: Cannot read properties of undefined (reading 'x') at mousemove.
Lieben Gruß,
Mark