По вашему вопросу звучит так, что у вас
- есть некоторые продукты на вашей странице, которые вы представляете как
<div>
элементы - меняют свою границу при клике
- хочет, чтобы они отображались как выбранные, когда пользователь обновляет страницу
Реагирует на представление некоторых данных, но не решает, как вы получите эти данные на страницу.Похоже, вы хотите сохранить список продуктов, выбранных , где-нибудь, а затем снова загрузить этот список на страницу, когда пользователь обновится.API Web Storage может быть полезен, но куки и сеансы могут делать то же самое.
Вам необходимо
- выбрать, что хранить (возможно, списокидентификаторов продуктов)
- выберите, где его хранить (localStorage, cookie, сервер или, возможно, в URL с https://reach.tech/router)
- при загрузке страницы реакции (
componentDidMount
для какого-либо компонента)прочитайте список из localalstorage в вашем штате - сопоставьте ваш список «выбранных продуктов» с вашими отдельными продуктами в
render
Итак, если вы загрузили список изодна из опций хранения в вашем состоянии - selectedProductIds
, а список продуктов - products
isSelected = (product) => {
this.state.selectedProductIds.includes(product.id)
}
render() {
return <section>
{ this.state.products.map((product) =>
<div className={this.isSelected(product) ? 'selected item' : 'item'}>
{product.name}
</div>
)}
</section>
}
. Синхронизация состояния React с каким-либо другим механизмом хранения может стать довольно грязной.