Вы можете сделать что-то вроде:
shouldDisableCheckbox = value => {
// either from props: const { maxAllowed } = this.props
// or from state: const { maxAllowed } = this.state
// or just a constant:
const maxAllowed = 3
const { checked } = this.state
return checked.length >= maxAllowed && checked.indexOf(value) === -1
}
, затем используйте его в своем флажке:
<Checkbox
checked={this.state.checked.indexOf(value) !== -1}
tabIndex={-1}
disabled={this.shouldDisableCheckbox(value)}
disableRipple
/>
такие вещи, как maxAllowed должны быть не в состоянии, а больше как константа или передаваться в качестве пропеллера (со значением по умолчанию, если ничего не указано), как maxAllowed это значение конфигурации, поэтому его место не в состоянии. Государство обычно должно содержать вещи, которые меняются.
Кроме того, как и при любой валидации пользовательского интерфейса, backend / api также не должен доверять этой валидации, поскольку ее слишком легко обмануть и удалить.