• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

React problem z KNN

42 Warsaw Coding Academy
0 głosów
162 wizyt
pytanie zadane 10 marca 2022 w JavaScript przez warzywko13 Użytkownik (840 p.)

Witam,

Mam problem z moim kodem i nie za bardzo wiem jak go rozwiązać. Kod działa poprawnie do momentu wywołania funkcji "Knn". Wówczas wybranie innego punktu lub zaczęcie pisania w formularzu x lub y zmienia wartość punktów. Obstawiam, że problem wynika w funkcji "Canvas" bo tylko tam mnożę y * -1. Nie za bardzo wiem jak się przed tym uchronić.

Kod z powodu na długość zamieściłem tutaj: https://pastebin.com/hiWqPygG

Screen obrazujący mój problem:

Za każdą pomoc bardzo dziękuję smiley

1 odpowiedź

+1 głos
odpowiedź 10 marca 2022 przez rafal.budzis Szeryf (85,700 p.)

Tak powinno działać ;) 

  const draw = (ctx, start_point, scale) => {
    points.forEach( item => {
      const y = parseInt(item.y) * -1; 
      ctx.lineTo(item.x * scale + start_point[0], y * scale + start_point[1]);
    })
  }

Problemem jest to że tablice i obiekty są przekazywane przez referencje. I modyfikujesz obiekt do którego odnoszą się te referencje. Aby się zabezpieczyć przed nadpisaniem sobie wartości można zamrozić sobie obiekt :) 

  AddToPoints = () => {
    const newPoint = Object.freeze({
      id: _uniqueId(),
      x: this.state.x,
      y: this.state.y
    });
 
    this.setState({
      points: [...this.state.points, newPoint]
    })
  }

Gdy masz ustawiony 

'use strict';

To podczas zmiany wartości przeglądarka rzuci błędem. Łatwiej będzie znaleźć problem ;) 

PS.
- usunąłbym x i y z state App i dodał bym je do state komponentu InsertForm (poczytaj o useState).
- komponent ShowList zwraca nie prawidłową wartość brakuje tam React.Fragment czyli <></>

 

Podobne pytania

0 głosów
0 odpowiedzi 204 wizyt
pytanie zadane 3 września 2019 w JavaScript przez Sobol3k Użytkownik (690 p.)
0 głosów
1 odpowiedź 146 wizyt
pytanie zadane 31 sierpnia 2020 w JavaScript przez Bish0p Obywatel (1,940 p.)
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 20 września 2019 w JavaScript przez DawidK Nałogowiec (37,910 p.)

93,398 zapytań

142,390 odpowiedzi

322,577 komentarzy

62,756 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...