Передача функции через реквизит в реагирует роутер - PullRequest
0 голосов
/ 08 мая 2018

Я знаю, как передавать реквизиты в реагирующий маршрутизатор, например, типа string. Но у меня есть проблема, когда я пытаюсь передать реквизит функции. На моем дочернем компоненте это реквизит "undefined".

Пример моей ссылки:

<Link to={'/Content/' + this.props.index + '/' + this.props.decreaseIndexProject}>Page n°1</Link>

Индексные реквизиты - это число, так что я могу получить его на моем дочернем компоненте, но не на decreaseIndexProject реквизитах.

Я использую PropType:

NavBar.propTypes = {
   indexProject: PropTypes.number,
   decreaseIndexProject: PropTypes.func
};

Мой компонент роутера:

<Router>
  <Switch>
    <Route path="/Content/:index/:decrease" exact name="content" component={Content} />
  </Switch>
</Router>

Маби, есть другой способ передать функцию? Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

@ Ответ Шубхам Хатри верен, но также не забудьте передать местоположение вашему компоненту, иначе ваше местоположение. Состояние будет неопределенным.

<Route
      path="/Content/:index"
      render={props => (<ComponentName location={props.location} {...props}/>)}
 />
0 голосов
/ 08 мая 2018

Вы можете передать функцию как состояние местоположения с помощью ссылки, как

<Link to={{
   pathname: '/Content/' + this.props.index
   state: {decrease: this.props.decreaseIndexProject}
}}>Page n°1</Link>

и

<Router>
  <Switch>
    <Route path="/Content/:index" exact name="content" component={Content} />
  </Switch>
</Router>

Теперь in Content вы можете использовать его как this.props.location.state.decrease

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