Size: a a a

React: русскоязычное сообщество

2020 October 22

M

Myroslav 🍎 in React: русскоязычное сообщество
источник

M

Myroslav 🍎 in React: русскоязычное сообщество
источник

M

Myroslav 🍎 in React: русскоязычное сообщество
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";
let ws = new WebSocket("ws://elepsio.herokuapp.com/");
export default function Chart() {
 const theme = useTheme();
 
 useEffect(() => {
   ws.onopen = () => console.log("ws opened");

   // ws.close = () => console.log("ws closed");
   ws.onmessage = function (event) {
     setBarData({ data: [...barData.data, JSON.parse(event.data)] });
   };
   return () => {
     ws.close();
   };
 }, []);

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

 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>
 );
}
источник

A

Aleksandr in React: русскоязычное сообщество
у тебя стейт вообще не правильный, у тебя обьект, внутри обьекта, внутри обьект
источник

A

Aleksandr in React: русскоязычное сообщество
источник

M

Myroslav 🍎 in React: русскоязычное сообщество
ну это да
источник

M

Myroslav 🍎 in React: русскоязычное сообщество
оболочка дерьмо
источник

M

Myroslav 🍎 in React: русскоязычное сообщество
но это же не должно влиять
источник

A

Aleksandr in React: русскоязычное сообщество
я как понимаю он мутируется просто, а не новый пишется
источник

M

Myroslav 🍎 in React: русскоязычное сообщество
да
источник

M

Myroslav 🍎 in React: русскоязычное сообщество
скорей всего мутируется
источник

ВА

Верди Атибайеба... in React: русскоязычное сообщество
Он новый всегда, потому что эффект зависит ни от чего.
источник

A

Aleksandr in React: русскоязычное сообщество
Myroslav 🍎
скорей всего мутируется
Оба хука useState и useReducer игнорируют обновления, если следующее значение равно предыдущему. Мутация состояния и вызов setState не приведут к повторному рендеру.
источник

A

Aleksandr in React: русскоязычное сообщество
Верди Атибайеба
Он новый всегда, потому что эффект зависит ни от чего.
эффект при такой записи вызывается только один раз при первом ренедере
источник

ВА

Верди Атибайеба... in React: русскоязычное сообщество
Т.е. он объявляется 1 раз, когда в данных нет. Потому всегда выдает 1 новое значение.
источник

A

Aleksandr in React: русскоязычное сообщество
Верди Атибайеба
Т.е. он объявляется 1 раз, когда в данных нет. Потому всегда выдает 1 новое значение.
так это слушатель, когда данные придут, туда они попадут
источник

ВА

Верди Атибайеба... in React: русскоязычное сообщество
Почитай внимательно про ,[] в эффекте.
источник

A

Aleksandr in React: русскоязычное сообщество
читал, что там?
источник

ВА

Верди Атибайеба... in React: русскоязычное сообщество
Внутри слушателя переменная из стейта как бы замирает во времени.
источник

ВА

Верди Атибайеба... in React: русскоязычное сообщество
Она не меняется, пока ты ее в зависимость эффекта не воткнешь.
источник