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

Вопрос к адептам функциональных компонетов. Как вот такой пример переписать

без класса (речь о компоненте EditableTable)? Столкнулся с проблемой, что если в лоб методы переписать в тело FC, то получается, что при вызове handleAdd происходит иммутабильное обновление стейта (как оно, собственно, и должно быть), а метод handleDelete продолжает смотреть в скоуп старого компонента, т.к. был в нём объявлен и dataSource соответственно не поменяется...
https://codesandbox.io/s/7cxdm?file=/index.js

13 ответов

13 просмотров
Alexandr- Автор вопроса

Мой кривой перенос на FC выглядит вот так. https://codesandbox.io/s/editable-cells-antd484-forked-j3q7l?file=/index.js

handleDelete = (key) => { const dataSource = [...this.state.dataSource]; this.setState({ dataSource: dataSource.filter((item) => item.key !== key), count: this.state.count - 1 });

Alexandr- Автор вопроса
Денис
handleDelete = (key) => { const dataSource = [...

Да, вопрос заключается в том, как перенести этот классовый метод в функциональный компонент.

Alexandr- Автор вопроса
Alexandr
Да, вопрос заключается в том, как перенести этот к...

И при этом иметь из него доступ к актуальному состоянию стейта.

Alexandr
Да, вопрос заключается в том, как перенести этот к...

const [data, setData] = useState(); const [count, setCounter] = useState(0) Или я не правильно понял тебя?)

Alexandr
И при этом иметь из него доступ к актуальному сост...

setFoo(prevFoo => bar(prevFoo)) если не ошибаюсь (я просто на это поменял в песочнице и у меня удаление работает, поэтому вот)

Alexandr- Автор вопроса
Stanislav
setFoo(prevFoo => bar(prevFoo)) если не ошибаюсь (...

Ты имеешь ввиду использовать старый массив и в него запушить новый элемент?

Alexandr
И при этом иметь из него доступ к актуальному сост...

вопрос в том, как сделать так, чтобы метод объявленный в одной функции, был доступен в другой функции?))

Alexandr- Автор вопроса
Stanislav
это я про код в handleDelete тут

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

Alexandr
Не понял о чем ты, но проблему нашёл, в useMemo на...

тогда выходит я вашу проблему не понял. впрочем раз она решена уже неважно.

Alexandr- Автор вопроса
Stanislav
тогда выходит я вашу проблему не понял. впрочем ра...

Проблема была в том, что удаление не работало

Alexandr- Автор вопроса
Alexandr
Мой кривой перенос на FC выглядит вот так. https:/...

Всё, дошло, есть второй способ решения, который позволяет оставить столбцы неизменными, надо рили просто коллбэк заюзать в сетСтейт. https://codesandbox.io/s/editable-cells-antd484-forked-j3q7l?file=/index.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
Карта сайта