У меня есть фиксированная боковая панель, которая содержит строку поиска с помощью кнопок фильтра, похожей на https://facebook.github.io/react/docs/thinking-in-react.htmlРеакция: как сохранить состояние бокового поля между изменениями url с помощью history.push()?
элементы списка являются интерактивными и вызвать history.push()
для вложенной URL-адресов пути.
вложенная структура путь
/category-1
/category-1/product-1
/category-1/product-2
/category-2
/category-2/product-1
/category-2/product-2
.
.
.
/category-n/product-m
/category-n/product-k
Пользователь может прокручивать список в Sidepanel и выберите фильтры. Однако щелчок по элементу списка (с onClick()
, за которым следует history.push()
) вызывает визуализацию всей страницы (включая боковую панель). Это, в свою очередь, не поддерживает состояние боковой панели, поэтому фильтры и положение прокрутки сбрасываются.
Родитель render: function()
выглядит следующим образом:
return(
<div id="main-view">
<Sidepanel history={this.props.history} properties={this.props.properties} />
React.cloneElement(this.props.children, {this.props});
</div>
);
React.cloneElement()
является продуктом информация контейнер, который должен оказывать только.
Я использую react-router, react-redux and redux-simple-router
.
Нужно ли сохранять положение прокрутки списка боковых панелей и значения фильтра за пределами боковой панели? Или есть лучший способ сохранить состояние боковой панели между URL-адресом?
Спасибо @leo - это решило проблему. Я переместил Sidepanel на верхний уровень в «Приложение», и теперь его состояние остается, пока URL-адрес получает обновление. Отлично! – martti
приятно, рад помочь! – lustoykov