Size: a a a

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

2020 August 26

AB

Andrew Baranow in React — русскоговорящее сообщество
arts
Толку-то от того, что он есть, если ты данные напрямую в стейт пихаешь?
я понял.! Работает. Спасибо
источник

a

arts in React — русскоговорящее сообщество
Andrew Baranow
у меня выше setState есть.
Да и вообще, зачем тебе там объект? Что мешает сделать const [logoType, setLogoType] = useState('')?
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Вадим Герасько
Ребят помогите пожалуйста
Есть два объекта
первый объект state={
"1":"",
"2":"",
"3":""
}
второй объект data={
"5":"vnsufvhdi",
"1":"t54ge",
"4":"vdfvdfbd",
"2":"vdsvsdbs",
"3":"vdsbdsbsd"
}
И надо в объект state присвоить значения второго объекта соответствующие значения
Например должно быть :
state={
"1":"t54ge",
"2":"vdsvsdbs",
"3":"vdsbdsbsd"
}
А зчем, если во втором объекте так уже и есть?)
источник

BM

Borislav Mitrofanov in React — русскоговорящее сообщество
Приветствую всех! У кого есть минут 10 на обсуждение сложного вопроса (ИМХО)? )
источник

ВГ

Вадим Герасько... in React — русскоговорящее сообщество
Vladimir Klimov
А зчем, если во втором объекте так уже и есть?)
нужно обновить стейт и потом стейт будет менятся
источник

a

arts in React — русскоговорящее сообщество
Borislav Mitrofanov
Приветствую всех! У кого есть минут 10 на обсуждение сложного вопроса (ИМХО)? )
источник

BM

Borislav Mitrofanov in React — русскоговорящее сообщество
Вадим Герасько
Ребят помогите пожалуйста
Есть два объекта
первый объект state={
"1":"",
"2":"",
"3":""
}
второй объект data={
"5":"vnsufvhdi",
"1":"t54ge",
"4":"vdfvdfbd",
"2":"vdsvsdbs",
"3":"vdsbdsbsd"
}
И надо в объект state присвоить значения второго объекта соответствующие значения
Например должно быть :
state={
"1":"t54ge",
"2":"vdsvsdbs",
"3":"vdsbdsbsd"
}
setState (state => {...this.state, ...data})
источник

a

arts in React — русскоговорящее сообщество
Borislav Mitrofanov
Приветствую всех! У кого есть минут 10 на обсуждение сложного вопроса (ИМХО)? )
Просто напиши вопрос в чат
источник

V

Vetro in React — русскоговорящее сообщество
написал хук, для создания лоадеров (индикаторов процесса какого-либа запроса и прочее)

нормально ли так и есть ли тут какие-то подводные камни, на которые я ненароком наткнулся?

import { useState } from 'react';

type Loaders<T extends Record<string, boolean>> = {
 loaded: <LoaderField extends keyof T>(loader: LoaderField) => boolean;
 setLoader: <LoaderField extends keyof T>(
   loader: LoaderField,
   value: boolean
 ) => void;
};

export const useLoaders = <T extends Record<string, boolean>>(
 loadersObj: T
): Loaders<T> => {
 const [loaders, setLoaders] = useState(loadersObj);

 const setLoader = <LoaderField extends keyof T>(
   loader: LoaderField,
   value: boolean
 ): void => {
   setLoaders({
     ...loaders,
     [loader]: value,
   });
 };

 const loaded = <LoaderField extends keyof T>(
   loader: LoaderField
 ): boolean => {
   return loaders[loader];
 };

 return {
   setLoader,
   loaded,
 };
};
источник

V

Vetro in React — русскоговорящее сообщество
использование:
  const { loaded, setLoader } = useLoaders({
   phone: false,
   email: false,
   sendSMS: false,
 });

setLoader('phone', true);
источник

SS

Sasha Semaniuk in React — русскоговорящее сообщество
Привет ребят
React, у меня есть Collapse компонент, который показывает или скрывает все children
Внутри компонента, который есть children я делаю useRef()
И когда я скрываю табу, а потом опять открываю, ref.current.getClientRect() - возвращает везде 0
Есть у кого идеи как пофиксить?
источник

BM

Borislav Mitrofanov in React — русскоговорящее сообщество
arts
Просто напиши вопрос в чат
Просто проверял на наличие людей и отсутствие троллей.

Есть структура (дерево элементов). У каждого элемента есть id, свой рендер (func component), а также правила, которые влияют на структуру(динамическая форма). Тобишь пользователь кликает по определенному графу/ветке - выводятся поля(группа инпутов, либо одиночный инпут), которые есть в этом графе, но при заполнении занчений нижние поля могут показываться или скрываться.

Вопрос. Делать HOC, который при выборе ветки пробегается по полям, собирает все правила и рефы полей, а затем при каждом изменении проверять изменённое состояние и менять структуру (скрывать или проявлять реф)?
источник

AS

Alexey Shvorak in React — русскоговорящее сообщество
Sasha Semaniuk
Привет ребят
React, у меня есть Collapse компонент, который показывает или скрывает все children
Внутри компонента, который есть children я делаю useRef()
И когда я скрываю табу, а потом опять открываю, ref.current.getClientRect() - возвращает везде 0
Есть у кого идеи как пофиксить?
Привет
Подозреваю что т.к. компонент Collapse возвращает null когда он свернут то ты используешь ссылку на элемент который уже размонтирован
Причина может быть в замыкании например, лучше скинь код в котором ты хочешь получить размеры элемента
источник

BM

Borislav Mitrofanov in React — русскоговорящее сообщество
Sasha Semaniuk
Привет ребят
React, у меня есть Collapse компонент, который показывает или скрывает все children
Внутри компонента, который есть children я делаю useRef()
И когда я скрываю табу, а потом опять открываю, ref.current.getClientRect() - возвращает везде 0
Есть у кого идеи как пофиксить?
а почему вообще ты так делаешь? У тебя, получается, одна кнопка, которая должна коллапсить ВСЕ списки или один список элементов? Почему тогда не добавлять className при клике на Коллапс элемент?
источник

ЕС

Евгений Скоробогатый... in React — русскоговорящее сообщество
Добрый день
Изучаю связку react и typescript/
В проекте несколько страниц и для роутинга использую react-router-dom. (Ставил через yarn add react-router-dom )
Далее в index.tsx добавляю
import { BrowserRouter as Router } from "react-router-dom"
И получаю ошибку вида:

Could not find a declaration file for module 'react-router-dom'. '..../node_modules/react-router-dom/index.js' implicitly has an 'any' type.
 Try `npm install @types/react-router-dom`

Как и просят устанавливаю
npm install @types/react-router-dom
,  этой ошибки нету, но получаю ошибку
Не удалось найти файл объявления модуля "react"
Как пофиксить?
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Евгений Скоробогатый
Добрый день
Изучаю связку react и typescript/
В проекте несколько страниц и для роутинга использую react-router-dom. (Ставил через yarn add react-router-dom )
Далее в index.tsx добавляю
import { BrowserRouter as Router } from "react-router-dom"
И получаю ошибку вида:

Could not find a declaration file for module 'react-router-dom'. '..../node_modules/react-router-dom/index.js' implicitly has an 'any' type.
 Try `npm install @types/react-router-dom`

Как и просят устанавливаю
npm install @types/react-router-dom
,  этой ошибки нету, но получаю ошибку
Не удалось найти файл объявления модуля "react"
Как пофиксить?
Покажите весь файл
источник

ЕС

Евгений Скоробогатый... in React — русскоговорящее сообщество
Vladimir Klimov
Покажите весь файл
Как бы все стандартно:
import React from 'react';
import ReactDOM from 'react-dom';

import { BrowserRouter as Router } from "react-router-dom"
import {createBrowserHistory} from 'history'

import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

const history = createBrowserHistory()

ReactDOM.render(
 <React.StrictMode>
   <Router history={history}>
     <App />
   </Router>      
 </React.StrictMode>,
 document.getElementById('root')
);
источник

ЕС

Евгений Скоробогатый... in React — русскоговорящее сообщество
Стало ругаться на:
import React from 'react';
import ReactDOM from 'react-dom';
источник

s

southyyy in React — русскоговорящее сообщество
Привет, подскажите пожалуйста как в функциональной компоненте оттрекать предыдущий роут (мне надо делать действие если чел перешел на страницу с определенной страницы)
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Евгений Скоробогатый
Как бы все стандартно:
import React from 'react';
import ReactDOM from 'react-dom';

import { BrowserRouter as Router } from "react-router-dom"
import {createBrowserHistory} from 'history'

import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

const history = createBrowserHistory()

ReactDOM.render(
 <React.StrictMode>
   <Router history={history}>
     <App />
   </Router>      
 </React.StrictMode>,
 document.getElementById('root')
);
а @types/react есть?
источник