componentDidMount() {
const results = await loadBots();
this.setState({bots: results.bots})
}
Также метод, для изменения типа бота, без перезагрузки с апи
setBotTypeState = (botId, type) => {
let bots = this.state.bots;
bots[bots.findIndex((bot => bot.id == botId))].type = type;
this.setState({
...this.state,
bots: bots
});
}
Передаю пропсами в дочерний компонент, вызываю, но ничего не происходит (консоль лог выводит данные, но состояние не изменяется)
Что не так?
если у тебя bots массив, то возможно ссылка на объект bots при изменении type не меняется, а значит state не меняется
красиво. сижу учу реакт, такие куски кода полезны)
К слову, второй код не работает по какой-то причине. Но вот первый - шикарный. Разве что во второй строчке this.state.bots.map
А ещё если ты юзаешь стрелочные функции в классах, то их не нужно привязывать в конструкторе явно. Стрелочные функции используют контекст объявления, поэтому они будут привязанными сразу
Про это знал, но т.к. проблема была с изменением состояния, решил на всякий случай дописать бинды)
Там ещё скобки кстати лишние в findIndex
Да, точно, молодец) this.state забыл Странно, что твой код с изменениями не работает. Вот набросал по-быстрому https://codesandbox.io/s/icy-sun-hcl9y?file=/src/App.js
Не работал как раз-таки из-за моих двух скобок) Да и мне понравился первый код, буду теперь так писать). Хотя странно, в песочнице работает с двумя скобками. Не понятный момент
Не, в песочнице одни скобки
Обсуждают сегодня