У нас есть приложение, которое позволяет пользователю устанавливать «параметры» на странице. Мы устанавливаем эти параметры на URL-адрес, используя React Router (вместе с историей) и библиотеку, которая URI-кодирует объекты JavaScript в формате, который может использоваться в качестве строки запроса.
Когда пользователь выбирает опцию, мы можем нажать значение, что на текущий маршрут с:
history.push({pathname: 'path/', search: '?' + Qs.stringify(params)});
pathname
может быть текущий путь. В вашем случае params
будет выглядеть примерно так:
{
selectedOption: 5
}
Затем на верхнем уровне React дерева, React маршрутизатор обновит props
этого компонента с опорой на location.search
, который закодированное значение мы установили ранее, так там будет что-то в componentWillReceiveProps
как:
params = Qs.parse(nextProps.location.search.substring(1));
this.setState({selectedOption: params.selectedOption});
Затем этот компонент и его дети будут повторно вынести с обновленной настройки. Поскольку информация находится на URL-адресе, она может быть помечена закладкой (или отправлена по электронной почте - это был наш прецедент), и обновление будет оставаться в том же состоянии. Это очень хорошо работает для нашего приложения.
Реагировать маршрутизатор: https://github.com/reactjs/react-router
История: https://github.com/ReactTraining/history
Строка запроса библиотека: https://github.com/ljharb/qs
http://gaearon.github.io/react-hot-loader/ –