Size: a a a

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

2021 February 16

А

Амангельди in React — русскоговорящее сообщество
Jumpux
Такое решение будет считаться правильным?
Ну впринципе да, только я не понял зачем ты меняешь состояние сразу после того как компонент в первый раз вызывается? Он же при следующем вызыве сделает запрос
источник

Т

Тимофей 🛴 in React — русскоговорящее сообщество
Stanislav Entaltsev
Всем привет. Какой подход к получению данных из state лучше,
1.
App() {
 const data = useSelector(state => state.data)
 retrurn ( <Section data={data} />)
}  

Section({ data }) {
 const section = data.section
 retrurn ( <Section section={section} /> )
}  

или
2.
App() {
 const data = useSelector(state => state.data)
 retrurn ( <Section data={data} />)
}  

Section({ data }) {
 const section = useSelector(state => state.data.section)
 retrurn ( <Section section={section} /> )
}
Сам селектор всегда выноси в отдельную функцию
источник

J

Jumpux in React — русскоговорящее сообщество
Амангельди
Ну впринципе да, только я не понял зачем ты меняешь состояние сразу после того как компонент в первый раз вызывается? Он же при следующем вызыве сделает запрос
Изначальное состояние компонента true и при рендере его, будет проверяться условие, если true, он изменит на false, а если будет false уже, то он при изменении state будет просто запускать функцию
источник

ДИ

Дмитрий Иванов... in React — русскоговорящее сообщество
Друзья всем привет, кто работал с Redux-toolkit требуется помощь. Я пытаюсь написать свою кастомную функцию которую буду передовать при вызове PayloadCreator в Async Thunk, пример:



export const updateCurrentBrand = createAsyncThunk('brand/updateCurrentBrand', protectRequest(brandApi, 'POST'))


Тело функции protectRequest:


export const protectRequest = (url: string, method: string) => {
   return ({id, data}: any, thunkAPI: any) => {
       fetch(url + (id ? id : ''), {
           method: method,
           body:
JSON.stringify(data),
           signal: thunkAPI.signal,
           headers: {
               "X-Requested-With": "XMLHttpRequest",
               'Accept': 'application/json',
               'Content-Type': 'application/json'
           }
       })
           .then(async (response) => {
               console.log(thunkAPI.signal)
               try {
                   const data = await response.json();
                   if (response.status === 200) {
                       return data
                   }
                   if (response.status === 400) {
                       return thunkAPI.rejectWithValue(data)
                   }
               }
               catch(err) {
                   let error = err
                   if (!error.response) {
                       throw err
                   }
                   return thunkAPI.rejectWithValue(response)
               }

           })
   }
}


В документации есть пример для обратки ошибок уже в компоненте, в моем случае ошибки не попадает и приложение думает что все хорошо, пример проверки в компоненте:

formikHelpers.validateForm(newValues)
   .then( async () => {
       const resultAction: any = await dispatch(
updateModelupdateModel({id, data: values}))
       if (
updateModelupdateModel.fulfilled.match(resultAction)) {
           enqueueSnackbar('Модель успешно обновлена', {variant: 'success'})
           dispatch(
getBrandgetBrand())
           goBack()
       } else {
           if (resultAction.payload) {
               const errorMessage: string = resultAction.payload.data.errors.title
               // Being that we passed in ValidationErrors to rejectType in `createAsyncThunk`, those types will be available here.
               formikHelpers.setSubmitting(false)
               enqueueSnackbar(`Ошибка:${errorMessage}, модель была обновлена ранее`, {variant: 'error'})
               goBack()
           }
       }
   })


Как в данном случае обработать ошибки с  сервера, заранее спасибо
источник

ДИ

Дмитрий Иванов... in React — русскоговорящее сообщество
источник

ДИ

Дмитрий Иванов... in React — русскоговорящее сообщество
вот так может будет удобнее
источник

SL

Sergey Lukashev in React — русскоговорящее сообщество
Тимофей 🛴
Сам селектор всегда выноси в отдельную функцию
А можешь объяснить для чего? Кажется, в случае, когда там простой селектор, это необязательно
источник

АЕ

Алексей Ефимов... in React — русскоговорящее сообщество
Добрый день, подскажите где проблема в коде может быть? Задача- нужно при открытой модалке запретить ввод с клавиатуры иначе разрешить
источник

АЕ

Алексей Ефимов... in React — русскоговорящее сообщество
или мб я как то не так обработчик навешиваю, в общем любые предложения
источник

Т

Тимофей 🛴 in React — русскоговорящее сообщество
Sergey Lukashev
А можешь объяснить для чего? Кажется, в случае, когда там простой селектор, это необязательно
Будут сложности с тестами и рефакторингом, нужно максимально разделять ответственности
источник

SL

Sergey Lukashev in React — русскоговорящее сообщество
Тимофей 🛴
Будут сложности с тестами и рефакторингом, нужно максимально разделять ответственности
не поспоришь
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Sergey Lukashev
А можешь объяснить для чего? Кажется, в случае, когда там простой селектор, это необязательно
будут сложности с "а давайте порефакторим и поменяем место, где это значение живет в стейте. ну-ка, где мы используем это значение в компонентах?"
источник

АЕ

Алексей Ефимов... in React — русскоговорящее сообщество
Алексей Ефимов
Добрый день, подскажите где проблема в коде может быть? Задача- нужно при открытой модалке запретить ввод с клавиатуры иначе разрешить
ребят хоть какие то мысли?
источник

SL

Sergey Lukashev in React — русскоговорящее сообщество
Roman Usherenko
будут сложности с "а давайте порефакторим и поменяем место, где это значение живет в стейте. ну-ка, где мы используем это значение в компонентах?"
да, я уже понял, но спасибо, что разжевал )
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Sergey Lukashev
да, я уже понял, но спасибо, что разжевал )
👍
просто слишком часто такое видел)
источник

АЕ

Алексей Ефимов... in React — русскоговорящее сообщество
либо может быть я зря вешаю обрабочик на window и надо на div вешать и фокусами ловить?
источник

М

Михайло in React — русскоговорящее сообщество
Алексей Ефимов
Добрый день, подскажите где проблема в коде может быть? Задача- нужно при открытой модалке запретить ввод с клавиатуры иначе разрешить
не понимаю что тебе нужно?
источник

М

Михайло in React — русскоговорящее сообщество
зачем блокировать клавиатуру?
источник

АЕ

Алексей Ефимов... in React — русскоговорящее сообщество
Михайло
не понимаю что тебе нужно?
нужно запретить ввод с клавиатуры в момент открытого попапа
источник

АЕ

Алексей Ефимов... in React — русскоговорящее сообщество
Михайло
зачем блокировать клавиатуру?
приложение скорости печати
источник