getUsers()
.then((users) => (this.users = users))
.then(() => getOrganizations())
.then((organizations) => (this.organizations = organizations))
.then(() => this.setState({ loading: false }));
Вот здесь место then лучше использовать await и try catch.
if (this.state.loading) {
return "Loading...";
}
let users = [];
for (let i = 0; i < this.users.length; i++) {
const name = this.users[i].name;
let org;
for (let j = 0; j < this.organizations.length; j++) {
if (this.organizations[j].id === this.users[i].organization) {
org = this.organizations[j].name;
}
}
users.push(
<div className="user-list-item">
<div>name: {name}</div>
<div onClick={() => this.selectOrg(org)}>org: {org}</div>
</div>
);
}
Вот здесь переменные всегда должны быть сверху выше всех
{this.state.selectedOrg && <button onClick={() => this.resetSelectedOrg()}>reset selected org</button>}
Не стоит создавать анонимные функции это плохо влияет на React
for (let j = 0; j < this.organizations.length; j++) {
if (this.organizations[j].id === this.users[i].organization) {
org = this.organizations[j].name;
}
}
Я одно понять не могу зачем делать такие циклы и использовать как перебор массива, когда есть
for (let i of arr)
Работает как у тебя, но кода будет чище
В целом компомнент не плохой, но написан на классовом компоненте, лучше писать на функиональном компоненте кода будет намного чище