Я новичок в React и все еще в процессе обучения, терпите меня. У меня проблема с приложением React, поскольку мой ввод теряет фокус после ввода одной буквы. Я разбил текстовое поле на компонент самостоятельно. Однако, кажется, когда я вызываю setState
для элемента в другом компоненте, это вызывает эту проблему.
У меня есть три компонента DropdownTextComponent
, DisplayedColumnsList
и AvailableColumnsList
в одном большом компоненте DropdownComponent
.
Это мой DropdownComponent
, который содержит три различных компонента.
const DropdownComponent = (props) => {
return (
<div className = "dropdown-column">
<Dropdown
isOpen = {this.state.dropdownOpen}
onClose = {() => this.setOpen(false)}
>
{props.dropdownsearch}
{props.displayedcolumns}
{props.availablecolumns}
</Dropdown>
</div>
);
}
Это мой DropdownTextComponent
:
const DropdownTextComponent = () => {
return (
<div className = "dropdown-text-input">
<TextInput
onChange = {this.dropdownSearch}
value = {this.state.dropdownValue}
>
</TextInput>
</div>
)
}
Этометод dropdownSearch
, который называется onChange
:
dropdownSearch(e) {
this.state.dropdownValue = e.target.value;
let resultCols = this.state.columns;
let dropdownSearchList = []
let dropdownSet = new Set();
for (let i = 0; i < resultCols.length; i++) {
if (resultCols[i].text.includes(e.target.value)) {
dropdownSet.add(resultCols[i]);
}
}
dropdownSearchList = [...dropdownSet]
this.setState({
toggleColumnList : dropdownSearchList
})
}
Теперь toggleColumnList
используется в двух различных компонентах DisplayedColumnsList
и AvailableColumnsList
, поэтому я предполагаю, что при использовании setState
здесь, он не должен повторно отображать DropdownTextComponent
. Но он делает это, и мое поле ввода теряет фокус. Я прокомментировал часть setState, и она отлично работает.
Я хотел бы знать, в чем проблема и как ее решить. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация по этому вопросу.