169 похожих чатов

Может кто подсказать? в конструкторе: this.setBotTypeState = this.setBotTypeState.bind(this); В компоненте родителе: async

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
});
}
Передаю пропсами в дочерний компонент, вызываю, но ничего не происходит (консоль лог выводит данные, но состояние не изменяется)

Что не так?

9 ответов

13 просмотров

если у тебя bots массив, то возможно ссылка на объект bots при изменении type не меняется, а значит state не меняется

красиво. сижу учу реакт, такие куски кода полезны)

Павел-Конин Автор вопроса

К слову, второй код не работает по какой-то причине. Но вот первый - шикарный. Разве что во второй строчке this.state.bots.map

А ещё если ты юзаешь стрелочные функции в классах, то их не нужно привязывать в конструкторе явно. Стрелочные функции используют контекст объявления, поэтому они будут привязанными сразу

Павел-Конин Автор вопроса

Про это знал, но т.к. проблема была с изменением состояния, решил на всякий случай дописать бинды)

Там ещё скобки кстати лишние в findIndex

Да, точно, молодец) this.state забыл Странно, что твой код с изменениями не работает. Вот набросал по-быстрому https://codesandbox.io/s/icy-sun-hcl9y?file=/src/App.js

Павел-Конин Автор вопроса

Не работал как раз-таки из-за моих двух скобок) Да и мне понравился первый код, буду теперь так писать). Хотя странно, в песочнице работает с двумя скобками. Не понятный момент

Не, в песочнице одни скобки

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта