Я пытаюсь установить флажок надлежащего реагирования, выберите все компоненты. Идея состоит в том, что есть компонент <InputCheckboxAll>
и <InputCheckbox>
, и я смогу проверить <InputCheckboxAll>
, и все из <InputCheckbox>
также будут выбраны.React input checkbox выбрать все компоненты
У меня две проблемы.
- Если
<InputCheckboxAll>
проверяется, я не могу отменить любой из<InputCheckbox>
. - Если все отметки
<InputCheckbox>
проверены, необходимо проверить<InputCheckboxAll>
.
var InputCheckboxAll = React.createClass({
handleChange: function (event) {
this.props.handleChange(event)
},
render: function() {
return (
<input
type='checkbox'
{...this.props}
onChange={this.handleChange} />
)
}
})
var InputCheckbox = React.createClass({
getInitialState: function() {
return {
checked: this.props.checked
}
},
render: function() {
var checkedValue = this.props.allChecked ? true : this.state.checked
return (
<input
checked={checkedValue}
type='checkbox'
{...this.props}/>
)
}
})
var Test = React.createClass({
getInitialState: function() { return {allChecked: false}; },
handleChange: function (event) {
var $elm = $(event.target)
var checked = $elm.prop('checked')
this.setState({
allChecked: checked
})
},
render: function() {
return (
<div>
Select All: <InputCheckboxAll handleChange={this.handleChange}/><br/>
<InputCheckbox allChecked={this.state.allChecked}/><br/>
<InputCheckbox allChecked={this.state.allChecked}/><br/>
<InputCheckbox allChecked={this.state.allChecked}/><br/>
</div>
)
}
})
React.render(<Test/>, document.body)
Это действительно полезно! Большое вам спасибо за то, что вы собрали это вместе. У меня есть одна проблема с этим, поскольку вы его создали. Я хотел бы сделать этот «checkbox» более модульным, поэтому я могу использовать его во многих разных проектах. Я не хочу каждый раз носить с собой эти обработчики событий. Я могу использовать mixin, но [видимо, они мертвы] (https: // medium.com/@ dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750) и что 'isAllChecked' var мешает. Также, чтобы определить состояние для каждого вяза, кажется излишним. Как бы вы портировали это еще дальше, чтобы быть модулем plug-and-play? – ThomasReggi
Или React просто не разрешает? – ThomasReggi
Какую функциональность вы хотите сделать модульной? Вы хотите иметь группу флажков, которые поставляются с сопровождающим флажком _select all_? Или вы хотите иметь _SelectAllCheckbox_, который вы можете обернуть вокруг других базовых флажков? Таким образом, вы можете обрабатывать выбор всей логики внутри этого элемента. – J3Y