Есть страница FAQ, соответсвенно там список вопросов, по клику на вопрос должен открываться ответ. Раньше было сделано так, была функция, которая при клике передавала индекс вопроса на котором клик был совершен, показывался ответе. если на этом же вопросе был повторный клик, то индекс вопроса удалялся из state и ответ скрывался.
class Questions extends PureComponent {
constructor(...args) {
super(...args);
this.handleOnSelectQuestion = ::this.handleOnSelectQuestion;
this.state = {
selectQuestion: [],
}}
handleOnSelectQuestion(question) {
this.setState(({selectQuestion}) => {
if(selectQuestion.indexOf(question) > -1){
return {
selectQuestion: selectQuestion.filter(questionId => questionId !== question)
};
}
return {
selectQuestion: [... selectQuestion, question]
};
});
}
}
render() {
return(
<div className={styles.question_container}>
{questionsList.map((question, index) => (
<QuestionsCard
key={index}
title={question.question}
answer={question.answer}
onSelect={partial(this.handleOnSelectQuestion, index)}
isOpen={selectQuestion.indexOf(index) > -1}
index={index}
/>
)
)}
</div>
)
}
сейчас такой вариант не подходит, нужно тоже самое реализовать с помощью location.query. Не могу понять, как при клике на вопрос индекс вопроса сохранить в массиве query. Пока набросала вот такую штуку
const {location} = this.props;
const query = {...location.query, question: [...location.query.question, question]};
но в консоли индексы почему то и строчные и числовые. console.log(query.question) =>
take.ms/23zdM