Использование ReactRouterDOM с HashRouter в выпадающем меню - PullRequest
0 голосов
/ 02 марта 2019

Я использую 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-запрос на выборку некоторых данных;
Выбранные данные сохраняются в состоянии, и раскрывающееся меню обновляется;
При изменении параметра изменяется маршрут.а также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...