Size: a a a

React — русскоговорящее сообщество

2020 October 22

О

Олег in React — русскоговорящее сообщество
Parhosha
Извиняюсь за глупый вопрос заранее, но возможно у когото было чтото подобное, что б глубоко не вдаваться, в чем может быть проблема, в случае, если реакт не обновляет ui, стейт обновляется, но после компоненты не перерисовываются
ты что то сделал не так
источник

M

Myroslav 🍎 in React — русскоговорящее сообщество
ребят использую websocket и запихнул в useeffect включение сокета ,и теперь когда я перехожу на страницу сокет подключается бесконечно хотя массив пустой в хуке
import React, { useState, useEffect } from "react";
import { useTheme } from "@material-ui/core/styles";
import {
 LineChart,
 Line,
 XAxis,
 YAxis,
 Label,
 ResponsiveContainer,
 Tooltip,
} from "recharts";
import Title from "./TittleNav";
import { useForkRef } from "@material-ui/core";

export default function Chart() {
 const theme = useTheme();
 var ws = new WebSocket("ws://elepsio.herokuapp.com/");

 useEffect(() => {
   ws.oneopen = function () {
     console.log("connect");
   };
 }, []);

 // WS.onopen = function () {
 //   console.log("Соединение установлено.");
 // };

 const [barData, setBarData] = useState({
   data: [
     {
       time: "18:02",
       pulse: 87,
     },
   ],
 });

 ws.onmessage = function (event) {
   setBarData({ data: [...barData.data, JSON.parse(event.data)] });
 };

 console.log(barData);
 return (
   <React.Fragment>
     <Title>График</Title>
     <ResponsiveContainer>
       <LineChart
         data={barData.data}
         margin={{
           top: 16,
           right: 16,
           bottom: 0,
           left: 24,
         }}
       >
         <XAxis dataKey="time" stroke={theme.palette.text.secondary} />
         <YAxis stroke={theme.palette.text.secondary}>
           <Label
             angle={270}
             position="left"
             style={{ textAnchor: "middle", fill: theme.palette.text.primary }}
           >
             Пульс
           </Label>
         </YAxis>
         <Tooltip />
         <Line
           type="monotone"
           dataKey="pulse"
           stroke={theme.palette.primary.main}
           dot={false}
         />
       </LineChart>
     </ResponsiveContainer>
   </React.Fragment>
 );
}
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
Перешел на страницу
Новый инстанс сокета
onmessage
Стейт обновился

колесо Сансары
источник

И

Иван in React — русскоговорящее сообщество
Myroslav 🍎
ребят использую websocket и запихнул в useeffect включение сокета ,и теперь когда я перехожу на страницу сокет подключается бесконечно хотя массив пустой в хуке
import React, { useState, useEffect } from "react";
import { useTheme } from "@material-ui/core/styles";
import {
 LineChart,
 Line,
 XAxis,
 YAxis,
 Label,
 ResponsiveContainer,
 Tooltip,
} from "recharts";
import Title from "./TittleNav";
import { useForkRef } from "@material-ui/core";

export default function Chart() {
 const theme = useTheme();
 var ws = new WebSocket("ws://elepsio.herokuapp.com/");

 useEffect(() => {
   ws.oneopen = function () {
     console.log("connect");
   };
 }, []);

 // WS.onopen = function () {
 //   console.log("Соединение установлено.");
 // };

 const [barData, setBarData] = useState({
   data: [
     {
       time: "18:02",
       pulse: 87,
     },
   ],
 });

 ws.onmessage = function (event) {
   setBarData({ data: [...barData.data, JSON.parse(event.data)] });
 };

 console.log(barData);
 return (
   <React.Fragment>
     <Title>График</Title>
     <ResponsiveContainer>
       <LineChart
         data={barData.data}
         margin={{
           top: 16,
           right: 16,
           bottom: 0,
           left: 24,
         }}
       >
         <XAxis dataKey="time" stroke={theme.palette.text.secondary} />
         <YAxis stroke={theme.palette.text.secondary}>
           <Label
             angle={270}
             position="left"
             style={{ textAnchor: "middle", fill: theme.palette.text.primary }}
           >
             Пульс
           </Label>
         </YAxis>
         <Tooltip />
         <Line
           type="monotone"
           dataKey="pulse"
           stroke={theme.palette.primary.main}
           dot={false}
         />
       </LineChart>
     </ResponsiveContainer>
   </React.Fragment>
 );
}
источник

M

Myroslav 🍎 in React — русскоговорящее сообщество
Ну я так же делаю
источник

M

Myroslav 🍎 in React — русскоговорящее сообщество
Только в его примере используются сокет io ,а у меня обычный веб сокет без либы
источник

IS

Ivan Sequend 👾 in React — русскоговорящее сообщество
У меня без либы норм работает чат на ws
источник

M

Myroslav 🍎 in React — русскоговорящее сообщество
И тип написать просто ws.onopen(); не откроется сокет  и приходиться писать стрелочную функцию
источник

IS

Ivan Sequend 👾 in React — русскоговорящее сообщество
А ws сервер вообще в порядке?
источник

И

Иван in React — русскоговорящее сообщество
Myroslav 🍎
Ну я так же делаю
Нет
источник

M

Myroslav 🍎 in React — русскоговорящее сообщество
Ivan Sequend 👾
А ws сервер вообще в порядке?
Да,отлично работает
источник

M

Myroslav 🍎 in React — русскоговорящее сообщество
Иван
Нет
Исправил
useEffect(() => {
   let ws = new WebSocket("ws://elepsio.herokuapp.com/");
   ws.onopen = () => console.log("ws opened");
   ws.onclose = () => console.log("ws closed");

   return () => {
     ws.close();
   };
 }, []);
источник

M

Myroslav 🍎 in React — русскоговорящее сообщество
работает исправно
источник

RS

Ragnar Sigurðsson in React — русскоговорящее сообщество
Переслано от Ragnar Sigurðsson
господа, это нормальная практика создавать экземляр класса внутри метода класса, от которого этот экземпляр экстендится?
источник

RS

Ragnar Sigurðsson in React — русскоговорящее сообщество
Переслано от Ragnar Sigurðsson
источник

И

Иван in React — русскоговорящее сообщество
Myroslav 🍎
Исправил
useEffect(() => {
   let ws = new WebSocket("ws://elepsio.herokuapp.com/");
   ws.onopen = () => console.log("ws opened");
   ws.onclose = () => console.log("ws closed");

   return () => {
     ws.close();
   };
 }, []);
Красавчик :)
источник

И

Иван in React — русскоговорящее сообщество
Ragnar Sigurðsson
Переслано от Ragnar Sigurðsson
господа, это нормальная практика создавать экземляр класса внутри метода класса, от которого этот экземпляр экстендится?
Выглядит как ООП-макакинг. Не могу сказать за нормальность — я в классы не умею. Но подозрительно как-то
источник

АБ

Александр Бакиматов... in React — русскоговорящее сообщество
хоспаде какая ж боль этот ваш mobx
источник

I

Igor in React — русскоговорящее сообщество
Ragnar Sigurðsson
Переслано от Ragnar Sigurðsson
господа, это нормальная практика создавать экземляр класса внутри метода класса, от которого этот экземпляр экстендится?
не очень понятно, как контроллер может быть пейлоадом
источник

АБ

Александр Бакиматов... in React — русскоговорящее сообщество
вот смотришь на это прям понимаешь как кто то может тебе в ногу настрелять
источник