Пытаюсь промапить массив из json файла, он пишет is not a function это как?

|
capfsb 2022-06-26 20:13:26
oxios 2022-06-26 19:39:36
Подскажите как можно вызывать api показа модалки MUI в интерсепторе аксиос?

<Modal
open={open}
onClose={handleClose}
>
Содержимое модалки
<Modal/>

Какие варианты есть? Хочу показать ошибки бекенда в модалке MUI глобально для всех запросов

Ты сможешь написать свою шину событий, которая реализует?

events.on(‘event’, ) и events.fire(‘event’) ?

oxios 2022-06-26 20:14:52
capfsb 2022-06-26 20:13:26
Ты сможешь написать свою шину событий, которая реализует?

events.on(‘event’, ) и events.fire(‘event’) ?

Кажется нет.. Что за «шина»?

capfsb 2022-06-26 20:17:04
scrappyzzz 2022-06-26 20:03:35
может кто-то подскажет, делаю авторизацию через фаербейс, хочу вынести логику в thunk, ожидаю, что дата попадет в экшен пейлоуд, но экшен пейлоуд всегда возвращает андефаинд (экстра редьюсер фулфилд)

Тебе надо написать функцию которая в модалке меняет содержимое.

1. В аксиос пишешь что-то вроде showModalMessage(….), где передаешь свою ошибку
2. showModalMessage устанавливает глобальную переменную и посылает событие на обновление
3. Компонент ожидает событие что изменилась глобальная переменная и обновляет свое состояние

Глобальная переменная не буквально переменная это скорее будет класс, который реализует что-то подобное https://refactoring.guru/ru/design-patterns/observer

capfsb 2022-06-26 20:18:08
scrappyzzz 2022-06-26 20:03:35
может кто-то подскажет, делаю авторизацию через фаербейс, хочу вынести логику в thunk, ожидаю, что дата попадет в экшен пейлоуд, но экшен пейлоуд всегда возвращает андефаинд (экстра редьюсер фулфилд)

Ну то есть основаня идея такая
Модалка следит за переменной
Ты меняешь эту переменную при ошибке в аксион
Следоветельно при ошибке модалка обновится

murrey7 2022-06-26 20:19:24
react_js-1481413.jpg
как такое называется, что бы загуглить?
murrey7 2022-06-26 20:19:38
гуглю выпадающий список на реакт, выходит не то что нужно
crucian 2022-06-26 20:19:44
аккордеон
emptyfate 2022-06-26 20:19:54
murrey7 2022-06-26 20:19:24
как такое называется, что бы загуглить?

accordion 🪗

murrey7 2022-06-26 20:20:22
спасибо
kurilovsergey 2022-06-26 20:21:18
Ребята, как мне наблюдать за ref.current.value? Хочу при отсутвии знаничения дизейблить кнопку, пока мысль использовать подписку на ref через useeffect и при отсутвии значения в переменную isDisableButton в usestate ставить true
kurilovsergey 2022-06-26 20:21:36
думаю есть проще варианты
scrappyzzz 2022-06-26 20:22:27
capfsb 2022-06-26 20:17:04
Тебе надо написать функцию которая в модалке меняет содержимое.

1. В аксиос пишешь что-то вроде showModalMessage(….), где передаешь свою ошибку
2. showModalMessage устанавливает глобальную переменную и посылает событие на обновление
3. Компонент ожидает событие что изменилась глобальная переменная и обновляет свое состояние

Глобальная переменная не буквально переменная это скорее будет класс, который реализует что-то подобное https://refactoring.guru/ru/design-patterns/observer

Спасибо)

capfsb 2022-06-26 20:25:12
kurilovsergey 2022-06-26 20:21:18
Ребята, как мне наблюдать за ref.current.value? Хочу при отсутвии знаничения дизейблить кнопку, пока мысль использовать подписку на ref через useeffect и при отсутвии значения в переменную isDisableButton в usestate ставить true

onChange={e=> setIsDisabled(Boolean(e.target.value))} так например на инпуте можно сделать, зачем за рефом следить?

kirillmohno185 2022-06-26 20:27:11
capfsb 2022-06-26 20:25:12
onChange={e=> setIsDisabled(Boolean(e.target.value))} так например на инпуте можно сделать, зачем за рефом следить?

Если элемент в другом компоненте? То контекст или внешний стейт можно точно

capfsb 2022-06-26 20:27:52
kirillmohno185 2022-06-26 20:27:11
Если элемент в другом компоненте? То контекст или внешний стейт можно точно

Можно контекст, но скорее всего достаточно будет прокинуть props

oxios 2022-06-26 20:30:04
capfsb 2022-06-26 20:18:08
Ну то есть основаня идея такая
Модалка следит за переменной
Ты меняешь эту переменную при ошибке в аксион
Следоветельно при ошибке модалка обновится

react_js-1481426.jpg

oxios 2022-06-26 20:30:04
capfsb 2022-06-26 20:18:08
Ну то есть основаня идея такая
Модалка следит за переменной
Ты меняешь эту переменную при ошибке в аксион
Следоветельно при ошибке модалка обновится

react_js-1481425.jpg

oxios 2022-06-26 20:30:04
capfsb 2022-06-26 20:18:08
Ну то есть основаня идея такая
Модалка следит за переменной
Ты меняешь эту переменную при ошибке в аксион
Следоветельно при ошибке модалка обновится

react_js-1481424.jpg
А если так? Не зашквар?

Простой компонент MuiGlobalModal
Внутри хранит состояние open и modalContent

В window сетит метод показа модалки с аргументом контента модалки (рис .1)

useEffect(() => {
window.onMuiGlobalModalOpen = handleOpen;
}, []);

В аксиосе радостно вызывать (рис.2)

const errorResponseData = error.response.data as ResponseApi;
window.onMuiGlobalModalOpen(errorResponseData.errorData.message);

Ну и саму модалку глобально положить, что бы не ререндерилась (рис .3)

<MuiGlobalModal />

capfsb 2022-06-26 20:39:47
oxios 2022-06-26 20:30:04
А если так? Не зашквар?

Простой компонент MuiGlobalModal
Внутри хранит состояние open и modalContent

В window сетит метод показа модалки с аргументом контента модалки (рис .1)

useEffect(() => {
window.onMuiGlobalModalOpen = handleOpen;
}, []);

В аксиосе радостно вызывать (рис.2)

const errorResponseData = error.response.data as ResponseApi;
window.onMuiGlobalModalOpen(errorResponseData.errorData.message);

Ну и саму модалку глобально положить, что бы не ререндерилась (рис .3)

<MuiGlobalModal />

Нет, так нельзя, нельзя устанавливать handleOpen как глобальную переменную

Сделай класс простой
class ModalMessage {
listeners = [];

setMessage(m){
this.message = m;
this.listeners.forEach(cb => cb(this.message))
}

onChange(callback){
this.listeners.push(callback)
}

removeListener(callback){
…удаление слушателя сам реализуй
получится как-то так
this.listeners= this.listeners.filter(cb => cb != callback)
}
}

window.modalState = new ModalMessage();

В модалке подписываешься на window.modalState вот так
useEffect(()=>{
const makeWork = ()=> ….
window.modalState.onChange(makeWork)
return ()=> window.modalState.removeListener(makeWork)
},[])

Ну и все, в любом месте в коде вызываешь window.modalState.setMessage(….) и модалка появится, можно завязать видимость модалки на то что сообщение не пустое, тогда вызов window.modalState.setMessage(null) скроет модалку

capfsb 2022-06-26 20:42:23
oxios 2022-06-26 20:30:04
А если так? Не зашквар?

Простой компонент MuiGlobalModal
Внутри хранит состояние open и modalContent

В window сетит метод показа модалки с аргументом контента модалки (рис .1)

useEffect(() => {
window.onMuiGlobalModalOpen = handleOpen;
}, []);

В аксиосе радостно вызывать (рис.2)

const errorResponseData = error.response.data as ResponseApi;
window.onMuiGlobalModalOpen(errorResponseData.errorData.message);

Ну и саму модалку глобально положить, что бы не ререндерилась (рис .3)

<MuiGlobalModal />

Глобальным делать этот ModalMessage не обязательно, можно просто обычнам модулем сделать и импорировать его в модалку и в то место где у тебя запрос делается и выставляется сообщение, window засорять не нужно

FixFive 2022-06-26 20:50:39
oxios 2022-06-26 20:30:04
А если так? Не зашквар?

Простой компонент MuiGlobalModal
Внутри хранит состояние open и modalContent

В window сетит метод показа модалки с аргументом контента модалки (рис .1)

useEffect(() => {
window.onMuiGlobalModalOpen = handleOpen;
}, []);

В аксиосе радостно вызывать (рис.2)

const errorResponseData = error.response.data as ResponseApi;
window.onMuiGlobalModalOpen(errorResponseData.errorData.message);

Ну и саму модалку глобально положить, что бы не ререндерилась (рис .3)

<MuiGlobalModal />

Прикольно. Для более сложных модалок можно через useReducer сделать и window.dispatchGlobalModal = dispatch . И в memo обернуть.

Drew Naumenko 2022-06-26 20:55:50
capfsb 2022-06-26 20:39:47
Нет, так нельзя, нельзя устанавливать handleOpen как глобальную переменную

Сделай класс простой
class ModalMessage {
listeners = [];

setMessage(m){
this.message = m;
this.listeners.forEach(cb => cb(this.message))
}

onChange(callback){
this.listeners.push(callback)
}

removeListener(callback){
…удаление слушателя сам реализуй
получится как-то так
this.listeners= this.listeners.filter(cb => cb != callback)
}
}

window.modalState = new ModalMessage();

В модалке подписываешься на window.modalState вот так
useEffect(()=>{
const makeWork = ()=> ….
window.modalState.onChange(makeWork)
return ()=> window.modalState.removeListener(makeWork)
},[])

Ну и все, в любом месте в коде вызываешь window.modalState.setMessage(….) и модалка появится, можно завязать видимость модалки на то что сообщение не пустое, тогда вызов window.modalState.setMessage(null) скроет модалку

Чёт капец, у модалки роль open-close, всё, проблема была одна, где в дом её плюнуть, но я radix ставлю и плюнуть в любом можно. Проблема решена.

capfsb 2022-06-26 21:00:55
Drew Naumenko 2022-06-26 20:55:50
Чёт капец, у модалки роль open-close, всё, проблема была одна, где в дом её плюнуть, но я radix ставлю и плюнуть в любом можно. Проблема решена.

Чет я не совсем понял что ты имеешь ввиду

kirillmohno185 2022-06-26 21:02:19
Drew Naumenko 2022-06-26 20:55:50
Чёт капец, у модалки роль open-close, всё, проблема была одна, где в дом её плюнуть, но я radix ставлю и плюнуть в любом можно. Проблема решена.

Это очень распространенный паттерн, называет Observer и listeners (subscribers)

2022-06-26 21:02:35
Привет,я установил роутер-дом можно как-то удалить это,типа как шаг назад?
capfsb 2022-06-26 21:03:30
kirillmohno185 2022-06-26 21:02:19
Это очень распространенный паттерн, называет Observer и listeners (subscribers)

Да, я даже на него там выше скинул ссылку, но я так и не понял что ты мне хочешь объяснить

emptyfate 2022-06-26 21:03:35
2022-06-26 21:02:35
Привет,я установил роутер-дом можно как-то удалить это,типа как шаг назад?

npm uninstall

Sa Sa 2022-06-26 21:03:36
всем привет, пытаюсь промапить массив из json файла, он пишет is not a function это как? массив пришел но не получается метод мап сделать
emptyfate 2022-06-26 21:04:07
Sa Sa 2022-06-26 21:03:36
всем привет, пытаюсь промапить массив из json файла, он пишет is not a function это как? массив пришел но не получается метод мап сделать

тебе туда же, куда в прошлый раз направляли — @js_noobs_ru

2022-06-26 21:04:10
npm uninstall потом название?
emptyfate 2022-06-26 21:04:17
2022-06-26 21:04:10
npm uninstall потом название?

да

2022-06-26 21:04:38
yarn uninstall можно ?
kirillmohno185 2022-06-26 21:04:40
capfsb 2022-06-26 21:03:30
Да, я даже на него там выше скинул ссылку, но я так и не понял что ты мне хочешь объяснить

Я?

capfsb 2022-06-26 21:05:01
kirillmohno185 2022-06-26 21:04:40
Я?

Не увидел что ник другой, сорян

kirillmohno185 2022-06-26 21:06:00
2022-06-26 21:04:38
yarn uninstall можно ?

yarn remove *Библа*

2022-06-26 21:06:55
спасибо
2022-06-26 21:17:33
Привет. Посоветуйте библиотеку для state — management. Благодарю!
emptyfate 2022-06-26 21:18:55
2022-06-26 21:17:33
Привет. Посоветуйте библиотеку для state — management. Благодарю!

@risenforces, перелогинься 🌚

risenforces 2022-06-26 21:19:10
2022-06-26 21:17:33
Привет. Посоветуйте библиотеку для state — management. Благодарю!

Эффектор

scrappyzzz 2022-06-26 21:22:37
2022-06-26 21:17:33
Привет. Посоветуйте библиотеку для state — management. Благодарю!

эффектор

scrappyzzz 2022-06-26 21:22:50
извиняюсь, что с маленькой
Эффектор
ejnshtein 2022-06-26 21:23:59
scrappyzzz 2022-06-26 21:22:37
эффектор
sssobeit 2022-06-26 21:24:01
не зовите только bxckwood
sssobeit 2022-06-26 21:24:18
2022-06-26 21:17:33
Привет. Посоветуйте библиотеку для state — management. Благодарю!

recoil

keijnn 2022-06-26 21:25:01
2022-06-26 21:17:33
Привет. Посоветуйте библиотеку для state — management. Благодарю!

Эффектор
(Напиши это и скину 15 рублей. Всё что в дужках удали. (с) @risenforces)

risenforces 2022-06-26 21:25:30
sssobeit 2022-06-26 21:24:18
recoil

Боже упаси

ejnshtein 2022-06-26 21:25:39
sssobeit 2022-06-26 21:24:18
recoil

фу, выйди

focusbytheway 2022-06-26 21:25:42
2022-06-26 21:17:33
Привет. Посоветуйте библиотеку для state — management. Благодарю!

эффектор

sssobeit 2022-06-26 21:25:48
risenforces 2022-06-26 21:25:30
Боже упаси

почему(

risenforces 2022-06-26 21:25:54
sssobeit 2022-06-26 21:25:48
почему(

Параша та еще

|