@ozerovlife

Компонент не вмонтирован?

Текст ошибки: "Warning: Can't call setState on a component that is not yet mounted...". Не могу понять почему ошибку выдает. Нагуглил что нужно запустить через componentDidMount но это тоже не сработало, точнее ничего не изменило. В чем подвох?
class Rate extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            date: '',
            currencyRat: {},
        }
        this.currency = ['USD', 'RUB', 'CAD'];
        this.geRate();
    }
    getRate() {
        fetch('https://api.exchangeratesapi.io/latest')
            .then(data => {
                return data.json
            })
            .then(data => {
                console.log(data)
                this.setState({ date: data.date })
            })
    }
  • Вопрос задан
  • 640 просмотров
Решения вопроса 2
miraage
@miraage
Старый прогер
class Rate extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            date: '',
            currencyRat: {},
        }
        this.currency = ['USD', 'RUB', 'CAD'];
    }
    componentDidMount() {
        this.getRate(); // не в конструкторе надо вызывать, а в componentDidMount
    }
    getRate() {
        fetch('https://api.exchangeratesapi.io/latest')
            .then(data => {
                return data.json(); // забыли вызвать функцию
            })
            .then(data => {
                console.log(data)
                this.setState({ date: data.date })
            })
    }
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега React
Не могу понять почему ошибку выдает.
Потому что вызываете setState в конструкторе, по сути.

нужно запустить через componentDidMount но это тоже не сработало
А должно было. Но поскольку код вы не показали, в чём там был подвох нам неизвестно. Скорее всего, вы просто добавили вызов в componentDidMount, но не убрали его из конструктора.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы