Установить состояние другого компонента из компонента Error Formik - PullRequest
0 голосов
/ 03 августа 2020

У меня есть код, который заменяет компонент Error Formik, который выглядит так:

const [ message, setMessage ] = useState("");    

const Error = props => {
        const fieldSelected = props.field;
        if ((errors[fieldSelected] && touched[fieldSelected])) {
            setMessage("");
            return (
                <span className={props.class ? props.class : "error-msg"}>
                    {errors[fieldSelected]}
                </span>
            );
        } else {
            return <span />;
        }
    };

Который должен установить состояние успешного массажа как setMessage(""). Он работает должным образом, но выдает предупреждение:

не может обновить компонент изнутри тела функции другого компонента

Я думал, что могу выполнять обратные вызовы, но похоже, что я сделали это неправильно.

Есть какие-нибудь советы по этому поводу?

1 Ответ

0 голосов
/ 05 августа 2020

Появилось два способа не отображать компонент сообщения, если у вас есть ошибки.

{!Object.keys(errors).length &&  <Message message={message}/>}

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

function resetAPI(url, props, setMessage) {

    axios.post(url)
    .then(response => {
        setMessage("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
    })
    .catch((error) => {
       setMessage('');
          ...
        }
    });
}

Надеюсь, что проблема решена.

...