@MarkLb

Почему дочерний компонент React игнорирует новый проп?

Изучаю React на тестовом проекте.

В компоненте Exercise есть дочерние Set. При удалении Set - нумерация их должна пересчитываться, но этого не происходит: в консоли виден верный результат пересчета, но Set будто игнорирует обновленный проп number.

WgqrQac.png
Иллюстрация: Новые значения пропа в консоли, и фактическое отображение

Demo&Code: https://codesandbox.io/s/shy-glitter-zrukv?file=/s...

Подсчёт нумерации происходит в ExerciseView:
function ExerciseView({id, title, sets}) {
    let number = 0;
    return (
        <div className="col-12" key={id}>
            <h5>{title}</h5>
            <table className="table table-bordered">
                <tbody>
                {sets.map((set) => {
                    return <Set {...set} number={number++} />
                })}
                </tbody>
            </table>
        </div>
    );
}
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега React
Конечно, Set игнорирует изменения пропса:
class Set extends React.Component {
    constructor(props) {
        super(props);

        this.state = {
            id: props.id,
            weight: null,
            reps: null,
            enableMaxReps: false,
            number: props.number || 0,
            isFilled: false,
        };
    }
}

Уберите number из state, зачем он там?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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