Я пытаюсь визуализировать некоторые дочерние компоненты, которые содержат некоторые складные объекты, используя MateralizeCss, и внутри каждой складной вкладки присутствуют три вкладки, и на каждой вкладке есть кнопка, и каждому из складных заголовков присваивается имя, через которое я передаю реквизит.
Теперь при событии OnClick каждой из этих кнопок я вызываю функцию, которая обновляет состояние дочернего компонента с помощью выбранной вкладки ('easy', 'med' или hard), что-то вроде this.setState({active: this.button.parentname})
, и возвращаю имя этого сворачиваемого для родителя, но проблема в том, что возвращаемое имя не является правильным, оно является первым дочерним, который был представлен первым.
Чтобы понять это, предположим, что у меня есть состояние в родительском компоненте, как.
{category: [
{"name": 1, .. some other properties}, // data of first collapsible
{"name": 2, .. some other properties}, // second
]}
Сначала состояние пустое, но позже категория заполняется асинхронно, но я справился с этим.
так что я рендерим это так,
<ul className="collapsible">
{this.state.category.length > 0 ? (this.state.category.map(((category, key) => (
<CategoryCollapsible key={key} category={category} get_name={this.get_name} />
)))) : null}
</ul>
и на стороне дочернего компонента у меня просто есть тег <li>
, внутри которого имя сворачиваемых заголовков this.props.category.name
.
и в теле у меня просто есть вкладки с кнопкой onClick, как я определил выше, то есть возвращает имя заголовка сворачиваемого элемента.
Итак, что может быть причиной этого?
почему реакция перепутана между двумя визуализированными дочерними компонентами?
Я также проверил реквизиты, используя ComponentDidMount()
, и реквизиты верны, но как только происходит событие onClick, реквизиты просто меняются на первые?
что это за колдовство?
какие-нибудь догадки?