Я работаю над приложением реагирования, которое, когда пользователь нажимает на один текст, отображает тег выбора с элементами на нем.
У меня здесь две проблемы:
- Когда я нажимаю на текст, тег выбора появляется на ВСЕХ элементе списка вместо элемента, на который был клик.
Например, у меня есть список:
--------------------------------
name item
--------------------------------
George text
Mikael text
Когда я нажимаю на текст для джорджа, и джордж, и микаэль будут отображать тег выбора. Что не то, что я хочу сделать. Он должен отображаться только в элементе списка, который был нажат.
- После выбора элемента из тега выбора он должен сохранить это состояние, и он станет значением по умолчанию для «текста».
Например:
--------------------------------
name item
--------------------------------
George text
Mikael text
Если я нажму на текст Джорджа, а затем появится тег выбора для Джорджа. если я выберу значение: item 1
, оно должно сохранить его и сделать его значением по умолчанию для текста, чтобы выходные данные были такими, а затем тег выбора снова исчезнет, а затем, если его щелкнуть, он снова появится, и наоборот:
--------------------------------
name item
--------------------------------
George item 1
Mikael text
Так что это своего рода переключение на обычный текст и выбор элементов тега.
До сих пор я создал один компонент с состоянием и один компонент без состояния или один компонент с состоянием. Когда состояние изменено, не устанавливайте напрямую trueState, оно противоположно текущему состоянию isItClick:! This.state.isItClick
import React, {Component} from 'react';
import ItemList from './ItemList';
class App extends Component {
constructor(props) {
super(props);
this.state = {
isItClick: false
}
this.clickfn = this.clickfn .bind(this);
}
clickfn = (value) => {
this.setState(() => ({
isItClick : !this.state.isItClick
}));
}
render() {
return (
<div>
{this.state.isItClick
? <ItemList clickfn ={this.clickfn }/>
: <div className="myspace" onClick={this.clickfn }>TEXT</div>
}
</div>
)
}
}
export default App;
А затем для моего компонента itemlist:
import React, {Component} from 'react';
const ItemList = (props) => {
return (
<div className="my-space">
<select onChange={(e) => props._handleClick(e.target.value)}>
<option value="1">Item 1</option>
<option value="2">Item 2</option>
<option value="3">Item 3</option>
</select>
</div>
);
}
export default ItemList;
Есть идеи, что мне здесь не хватает? Что мне нужно исправить, чтобы это работало исходя из моих целей? Пожалуйста, помогите новичку здесь!
PS. Был бы признателен за демонстрационный код.