Size: a a a

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

2021 March 06

Р

Ренат Форте... in React — русскоговорящее сообщество
Кто недавно устроился джун реакт разрабами в москве без опыта, на какую зп пришли?
источник

MK

Max Kiner in React — русскоговорящее сообщество
Ренат Форте
Кто недавно устроился джун реакт разрабами в москве без опыта, на какую зп пришли?
Устроился в октябре без опыта. Не в Мск, но на удалёнку, сначала реакт, потом vue и nestjs, на почасовую - 400 в час, сейчас 450 в час, а скоро обещают 500
источник

SL

Sergey Lukyanchikov in React — русскоговорящее сообщество
Молодец)
источник

MK

Max Kiner in React — русскоговорящее сообщество
Для Мск, наверное, мало, но мне в регионе норм
источник

SL

Sergey Lukyanchikov in React — русскоговорящее сообщество
Max Kiner
Для Мск, наверное, мало, но мне в регионе норм
Хардово было собеску проходить?
источник

MK

Max Kiner in React — русскоговорящее сообщество
Sergey Lukyanchikov
Хардово было собеску проходить?
Как ни странно, именно туда взяли без собесов, чисто по резюме
источник

SL

Sergey Lukyanchikov in React — русскоговорящее сообщество
Max Kiner
Как ни странно, именно туда взяли без собесов, чисто по резюме
Реально молодец)
источник

MK

Max Kiner in React — русскоговорящее сообщество
Потом сказали, что чисто код пишу
источник

MK

Max Kiner in React — русскоговорящее сообщество
Хотя на самом деле я с этим не согласен 🤣
источник

SL

Sergey Lukyanchikov in React — русскоговорящее сообщество
ХД))
источник

SL

Sergey Lukyanchikov in React — русскоговорящее сообщество
Да мелочи они такие)
источник

I

Iliaa in React — русскоговорящее сообщество
Max Kiner
Для Мск, наверное, мало, но мне в регионе норм
На каких сайтах искал работу подскажи плиз
источник

А

Антон in React — русскоговорящее сообщество
О работа, это значит вам в @javascript_jobs
источник

MK

Max Kiner in React — русскоговорящее сообщество
Iliaa
На каких сайтах искал работу подскажи плиз
Я на курсах учился, в образовательной площадке, они помогли составить резюме и подбирали вакансии
источник

NN

No Name in React — русскоговорящее сообщество
какой  редактор кода лучше всего использовать ?
источник

MM

Max Minin in React — русскоговорящее сообщество
Webstorm
источник

TK

Taras Karpyn in React — русскоговорящее сообщество
No Name
какой  редактор кода лучше всего использовать ?
Выбирай сам, да хоть в блокноте
источник

KI

Kirill Ivanov in React — русскоговорящее сообщество
Всем привет!
Нужна помощь от знакомых с jest и react-testing-library

Имеется несложный инпут компонент
Так как я хочу, чтобы инпут мог рисовать только целые числа и числа от min до max, я храню локальный стейт, который основывается также на пропе value, и меняется в useEffect. Значение пробрасывается в родитель по блюру. Вроде ничего сложного

import * as React from 'react';
import { useEffect, useState } from 'react';

function isMinValue(value, min) {
 return min !== undefined && value <= min;
}

function isMaxValue(value, max) {
 return max !== undefined && value >= max;
}

export default function Counter(props) {
 const [localValue, setLocalValue] = useState(String(props.value));

 useEffect(() => {
   setLocalValue(String(props.value));
 }, [props.value]);

 function onChange(event) {
   setLocalValue(event.target.value);
 }

 function onBlur(event) {
   const value = isMaxValue(Number(event.target.value), props.max)
     ? props.max
     : isMinValue(Number(event.target.value), props.min)
     ? props.min
     : event.target.value;
   const intValue = Math.floor(Number(value));
   props.handleChange(intValue);
 }

 return (
   <input
     data-testid="input"
     style={{ width: 48 }}
     type="number"
     onChange={onChange}
     onBlur={onBlur}
     value={localValue}
     max={props.max}
     min={props.min}
   />
 );
}

Пишу тесты на данный компонент, и столкнулся с проблемой: при проверке кейса на попытку ввода числа больше max, инпут сохраняет старое значение после ререндера

Для примера, вот тест который проходит (проверка на то, что значение округляется - инпут должен уметь рисовать только целые значения)
 it('result value is rounded', () => {
   let value = 0;
   const handleChange = jest.fn(x => {
     value = x;
   });

   const { rerender } = render(
     <Counter {...defaultProps} value={value} handleChange={handleChange} />
   );

   const input = screen.queryByTestId('input');
   fireEvent.change(input, { target: { value: 1.9 } });
   fireEvent.blur(input);
   expect(value).toBe(1); // ✅ Проп успешно изменился

   rerender(<Counter {...defaultProps} value={value} handleChange={handleChange} />);
   expect(input.value).toBe('1'); // ✅ Локальное значение успешно изменилось
 });

А вот тест на максимальное значение не проходит. Точнее тут даже так: проп изменяется правильно, а локально значение остается неправильным - как будто компонент просто не заререндерился
 it('no updates on change if new value is bigger than max', () => {
   let value = 10;
   const max = 10;
   const handleChange = jest.fn(x => {
     value = x;
   });

   const { rerender } = render(
     <Counter {...defaultProps} value={value} max={max} handleChange={handleChange} />
   );

   const input = screen.queryByTestId('input');
   fireEvent.change(input, { target: { value: 20 } });
   fireEvent.blur(input);
   expect(value).toBe(10); // ✅ Проп успешно изменился

   rerender(<Counter {...defaultProps} value={value} handleChange={handleChange} />);
   expect(input.value).toBe('10'); // ❌ Received: '20'
 });

Казалось бы два похожих кейса: введённое значение парсится в компоненте по блюру, да и проп успешно меняется. Но в первом случае, localValue изменилось, а во втором нет. И мне кажется я упускаю какой-то фундаменатльный момент. При этом в самом UI все ок - в инпуте в итоге правильное значение
источник

АК

Алексей Коровацкий... in React — русскоговорящее сообщество
Привет. Получаю данные с помощью Аксиос. Компонент использует хуки.
const [paginateData, setPaginateData] = useState([]);
У меня данные - один объект с ключами. Примерно так    
{"pagination": {
       "total": 12,
       "per_page": 10,
        ...
   }},

Нужно ли для вывода значения в разметке использоаать map?
Или достаточно <div>{paginateData.per_page}</div>

Данные получены в useEffect

useEffect(() => {
   api.get(
URL, { headers: authHeader() })
       .then(res => {
           
consoleconsole.log(res);
           setPaginateData(res.data.pagination);
       })
       .catch(err => {
           
consoleconsole.log(err);
       })
}, []);
источник

PD

Petya Danchuk in React — русскоговорящее сообщество
Я обернул две иконки из @material-ui/icons в Link и появились такие отступы снизу. Их как-нибудь можно убрать?
источник