#javascript #reactjs #state #concat
#javascript #reactjs #состояние #конкатенация
Вопрос:
Как изменить пользовательский интерфейс компонента CheckBox? Состояние мутирует точно так, как я хотел, однако флажок не выглядит установленным после вызова onCheck (при нажатии на него).
Я предполагаю, что я должен создать или использовать существующий реквизит для входных объектов:
onCheck = item => {
this.setState(prevState => ({
usage: prevState.usage.concat(item.label, ",")
}));
//Todo: Display as checked
};
{checkboxes.map(item => (
<div className="d-inline-block w-50 p">
<CheckBox
name={item.name}
onChange={this.onCheck.bind(this, item)}
/>
<label key={item.key}>{item.label}</label>
</div>
))}
const CheckBox = ({ type = "checkbox", name, checked = false, onChange }) => (
<input type={type} name={name} checked={checked} onChange={onChange} />
);
Комментарии:
1.
key
Свойство должно быть у<div>
элемента, а не у<label>
элемента.
Ответ №1:
Добро пожаловать в сообщество, вам нужно передать компоненту CheckBox значение true / false с отметкой Checkbox
<CheckBox
name={item.name}
checked={this.state.usage.includes(item.label)}
onChange={this.onCheck.bind(this, item)}
/>
Также вам не нужно включать ‘,’ при объединении, поскольку оно создает массив
Обратитесь к ссылке для справкиhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
Ответ №2:
Вам нужно включить свойство checked, и вы можете использовать состояние для его обработки. Допустим "isChecked"
.
Пример:
<CheckBox checked={this.state.isChecked} > ( your previously added properties)
И вы бы включили что-то подобное в свою функцию:
this.setState((prevState) => { isChecked: !prevState.isChecked});