У меня в данный момент динамический свертывание списка элементов / w с помощью API.
Теперь я пытаюсь сохранить состояние коллапса (true или false / Open closed) в localalstorage, чтобы при обновлении страницы я не запомнил, какой коллапс был открыт пользователем.
Как сохранить динамическое состояние в локальном хранилище?
Вы можете увидеть мой код ниже
Динамическое изменение состояния и сохранение локального хранилища
handleClick=(e, item)=>{
this.setState({
[item.id + 'Open'] : !this.state[item.id +'Open']
})
// store item details and jwt token in local storage to keep item logged in between page refreshes
localStorage.setItem('currentopentab', JSON.stringify(item));
currentUserSubject.next(item);
return item;
};
Элемент списка
<List
component="nav"
subheader={<ListSubheader component="div">Waiting for order</ListSubheader>}
className={classes.root}
>
{
this.state.ordersWaiting.map((item, index) =>{
return (
<div key={index}>
{console.log('item',item)}
<ListItem button className={classes.orderheader} >
<div className={classes.expandContainer} onClick={((e) => this.handleClick(e, item))}>
<ListItemIcon>
<InboxIcon />
</ListItemIcon>
<ListItemText inset primary={item.userName} secondary={item.timeStamp}/>
{this.state[item.id + 'Open'] ? <ExpandLess /> : <ExpandMore />}
</div>
<Fab color="secondary" aria-label="Add" className={classes.fabButton}>
<AddIcon onClick={((e) => this.prepareOrder(e, item))} />
</Fab>
</ListItem>
<Collapse in={this.state[item.id + 'Open'] } timeout="auto" unmountOnExit>
<List component="div" disablePadding>
{ item.order.map((products, index) =>{
return (<ListItem key={index} button className={classes.nested}>
<ListItemIcon>
<StarBorder />
</ListItemIcon>
<ListItemText inset primary={products.qty + ' x ' + products.product} />
</ListItem>
)
}
)}
</List>