Зачем менять весь поток компонентов вместо того, чтобы выбрать правильный метод жизненного цикла?
Кстати, ComponentWillReceieveProps()
скоро будет объявлено устаревшим, если оно еще не устарело, так как это давало слишком много головной боли для Реактивная команда. Он был заменен методом stati c - getDerivedStateFromProps()
.
Небольшая разница между этим и ComponentWillReceieveProps()
в том, что, будучи методом stati c, вы не сможете использовать this
.
Подробнее об этом здесь .
Я попытался преобразовать ваш компонент в getDerivedStateFromProps()
. Но было слишком много сложностей, поскольку this
, prevProps
и async/await
не могут быть использованы в нем.
Более простым решением было бы использование React Hooks
const Login = ({ error, loading, token }) => {
const [username, setUsername] = React.useState();
const [id, setId] = React.useState();
const [password, setPassword] = React.useState();
React.useEffect(() => {
authAxios.get("user")
.then(res =>{
setId(res.data.id);
setUsername(res.data.username);
});
}, [token])
// UseEffect hooks will run if React detects
// changes in props.token
}
Hope это помогает