Я использую withRouter()
для преобразования выпадающего меню в маршрутизаторе.К сожалению, мне нужно использовать хешированные маршруты.
Существует ли подобный подход, который можно использовать с HashRouter
.Спасибо.
ОБНОВЛЕНИЕ:
Это соответствующий источник в main.js
.
class App extends React.Component {
// ...
render() {
return (
React.createElement(ReactRouterDOM.BrowserRouter, null,
React.createElement("div", null,
// ...
React.createElement(ReactRouterDOM.withRouter(Dropdown), {
_value: this.state.foo,
_options: [this.state.foo],
_onChangeCallback: this.handleChangeCallback // this updates the state
}),
// ...
)
)
)
}
}
В dropdown.js
компонент изменяет маршрут в соответствии с раскрывающимся списком:
export default class Dropdown extends React.Component {
// ...
componentWillMount() {
if (this.props._value) this.props.history.push(`/${this.props._value}`); // update route
}
handleChange(event) {
this.props._onChangeCallback(event.target.value); // update the state
}
// ...
render() {
const options = this.props._options.map((val) => React.createElement("option", {value: val}, val));
return React.createElement("div", null,
React.createElement("span", null,
React.createElement("select", {
onChange: this.handleChange,
value: this.props._value,
}, options)));
}
}
Когда компонент монтируется, появляется HTTP-запрос на выборку некоторых данных;
Выбранные данные сохраняются в состоянии, и раскрывающееся меню обновляется;
При изменении параметра изменяется маршрут.а также.