Я пытаюсь применить следующий список выпадающих списков реагирующих полос, переключая isOpen внутри каждого массива объектов в машинописи. Я получаю объект от redux, который имеет следующую структуру, Object.InnerObject.Array [isOpen, isOpen, ...] Я пытаюсь вызвать переключение в этом массиве, но машинопись не позволяет мне делать следующее. У меня есть следующий объект в состоянии:
totalWorkload: {
userId: 'd3d4',
cost: 3,
options: [
{
optionTitle: 'dedew',
optionDescription: 'fewfw',
options: [],
isOpen: false,
selectedOption: ''
}
]
}
Я пытаюсь переключить isOpen в массиве параметров в следующем компоненте:
export const Options = props => (
<div>
{console.log(typeof props.totalWorkloadOptions.isOpen)}
{console.log(typeof props.toggleDropDown}
<Dropdown isOpen={props.totalWorkloadOptions.isOpen} toggle={() => props.toggleDropDown(props.totalWorkloadOptions.optionTitle)}>
<DropdownToggle caret>{props.totalWorkloadOptions.optionTitle}</DropdownToggle>
<DropdownMenu>
{props.totalWorkloadOptions.options.map(op => (
// tslint:disable-next-line:no-invalid-this
// tslint:disable-next-line:jsx-no-lambda
<DropdownItem key={op} data-key={op} onClick={() => props.appendChoiceList(props.totalWorkloadOptions.optionTitle, op)}>
{op}
</DropdownItem>
))}
</DropdownMenu>
<strong> {props.totalWorkloadOptions.optionDescription} </strong>
</Dropdown>
<br />
</div>
);
Проблема в том, что когда я попадаю сюда, я не могу установить состояние переданного раскрывающегося списка isOpen:
toggleDropDown = optionTitle => {
console.log("TITLE:" + optionTitle);
const options = this.state.totalWorkload.options.map(item => {
if (item.optionTitle === optionTitle) {
this.setState({ ...item, isOpen: !item.isOpen })
} else {
return item;
}
});
return { options };
};