Size: a a a

2020 August 01

MR

Mike Rain in ☄️ effector
привет ребят! как грамотно реализовать редирект после отправки данных на сервер и успешном ответе?

есть форма, при сабмите я вызываю ивент эффектора с пэйлоадом формы и через sample отправляю в эффект, который отправляет данные на сервер.

и после того, как сервер ответит, если успешно то нужно сделать редирект (именно через роутер) на другую страницу.

в самой модели конечно не вариант юзать useHistory от react-router-dom. так как нужен реакт компонент, но и создавать к примеру переменную, к примеру $isDone и юзать ее в компоненте, в хуке эффекта, чтобы сделать редирект не очень-то и приятно.

// так не хочется юзать
const isDone = useStore($isDone)

React.useEffect(() => {
 isDone && history.push(path)
}, [isDone])
источник

🦜

🦜 in ☄️ effector
Mike Rain
привет ребят! как грамотно реализовать редирект после отправки данных на сервер и успешном ответе?

есть форма, при сабмите я вызываю ивент эффектора с пэйлоадом формы и через sample отправляю в эффект, который отправляет данные на сервер.

и после того, как сервер ответит, если успешно то нужно сделать редирект (именно через роутер) на другую страницу.

в самой модели конечно не вариант юзать useHistory от react-router-dom. так как нужен реакт компонент, но и создавать к примеру переменную, к примеру $isDone и юзать ее в компоненте, в хуке эффекта, чтобы сделать редирект не очень-то и приятно.

// так не хочется юзать
const isDone = useStore($isDone)

React.useEffect(() => {
 isDone && history.push(path)
}, [isDone])
forward({fx.done, to: fxRedirect})
источник

MR

Mike Rain in ☄️ effector
пробовал колю\к прокидывать вместе с пэйлоадом формы, но очень усложняет
источник

MR

Mike Rain in ☄️ effector
fxRedirect а тут же не будет работать хук, не?
источник

MR

Mike Rain in ☄️ effector
в эффекте
источник

🦜

🦜 in ☄️ effector
fxRedirect({handler: () => history.push()})
источник

DS

Dmitriy Shuleshov in ☄️ effector
Mike Rain
привет ребят! как грамотно реализовать редирект после отправки данных на сервер и успешном ответе?

есть форма, при сабмите я вызываю ивент эффектора с пэйлоадом формы и через sample отправляю в эффект, который отправляет данные на сервер.

и после того, как сервер ответит, если успешно то нужно сделать редирект (именно через роутер) на другую страницу.

в самой модели конечно не вариант юзать useHistory от react-router-dom. так как нужен реакт компонент, но и создавать к примеру переменную, к примеру $isDone и юзать ее в компоненте, в хуке эффекта, чтобы сделать редирект не очень-то и приятно.

// так не хочется юзать
const isDone = useStore($isDone)

React.useEffect(() => {
 isDone && history.push(path)
}, [isDone])
Юзать Router и свой инстанс history
источник

MR

Mike Rain in ☄️ effector
Dmitriy Shuleshov
Юзать Router и свой инстанс history
это как? пример напишешь?)
источник

🦜

🦜 in ☄️ effector
Mike Rain
это как? пример напишешь?)
я тебе выше написал
источник

MR

Mike Rain in ☄️ effector
🦜
я тебе выше написал
сейчас попробую, спасибо
источник

🅅🄺

🅅aleriy 🄺obzar in ☄️ effector
юзай тот history  что ты при инициализации роутера использовал
источник

🅅🄺

🅅aleriy 🄺obzar in ☄️ effector
че то все про него забывают как то
источник

🦜

🦜 in ☄️ effector
🅅aleriy 🄺obzar
че то все про него забывают как то
так он не требуется при инициализации
источник

MR

Mike Rain in ☄️ effector
🦜
fxRedirect({handler: () => history.push()})
это не работет)

вот так я сделал:

const redirectFx = createEffect();

redirectFx.use(() => {
 console.log('1'); // выводится
 const history = useHistory();
 console.log('2', history); // не выводится
 history.push('/');
});

forward({
 from: sendFx.done,
 to: redirectFx,
});

useHistory
должен вызываться как я понял в функциональном компоненте реакта
источник

🦜

🦜 in ☄️ effector
Mike Rain
это не работет)

вот так я сделал:

const redirectFx = createEffect();

redirectFx.use(() => {
 console.log('1'); // выводится
 const history = useHistory();
 console.log('2', history); // не выводится
 history.push('/');
});

forward({
 from: sendFx.done,
 to: redirectFx,
});

useHistory
должен вызываться как я понял в функциональном компоненте реакта
ты рофлишь?
источник

MR

Mike Rain in ☄️ effector
🅅aleriy 🄺obzar
юзай тот history  что ты при инициализации роутера использовал
не использовал никакой
источник

MR

Mike Rain in ☄️ effector
🦜
ты рофлишь?
нет, скорее чего-то не понимаю
источник

🦜

🦜 in ☄️ effector
сейчас
источник

DS

Dmitriy Shuleshov in ☄️ effector
🦜
ты рофлишь?
ну не набрасывай ну видишь не знает человек просто
источник

🦜

🦜 in ☄️ effector
Mike Rain
нет, скорее чего-то не понимаю
import { history } from 'config/history.config';
источник