Каждый раз, когда вызывается setState (), кажется, что компонент не перерисовывается.Как вы можете видеть из моих комментариев, состояние действительно меняется, и рендеринг, кажется, вызывается снова, но если я не добавлю это выражение if и просто добавлю тег абзаца, который отображает данные, это выдаст мне ошибку.Я уверен, что упускаю что-то простое, но любая помощь приветствуется.
import React from "react";
import axios from "axios";
import { constants } from "../constants/constants";
const { baseURL, apiKey, userName } = constants;
class User extends React.Component {
constructor(props) {
super(props);
this.state = {
user: []
};
}
componentDidMount() {
let getUserInfo = axios.create({
baseURL,
url: `?
method=user.getinfo&user=${userName}&api_key=${apiKey}&format=json`
});
getUserInfo().then(response => {
let data = response.data;
console.log(data.user.playcount); //logs second, displays correct
this.setState(state => ({
user: data
}));
});
}
render() {
console.log(this.state); //logs first and third, doesn't work on first but does on third
let toReturn;
if (this.state.user.length > 0) {
toReturn = <p>{this.state.user.user.playcount}</p>;
} else {
toReturn = <p>didn't work</p>;
}
return <div>{toReturn}</div>;
}
}
export default User;