Мини реквизит React Router - PullRequest
       1

Мини реквизит React Router

0 голосов
/ 11 июня 2018

Мне нужно передать реквизиты через React Router компоненту LawsList.Поэтому я придумываю следующий код:

На main.js:

const lawlistcomponent = props => {
  console.log("test");
  return <LawsList {...props} />;
};

const routes = (
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <IndexRoute render={lawlistcomponent} />
      <Route path="laws/:lawId" component={LawsMain} />
      <Route path="votes/:lawId" component={VotesMain} />
    </Route>
  </Router>
);

И на компоненте LawsList:

 export default createContainer(props => {
  console.log(this.props.voted);
  Meteor.subscribe("laws", props.voted);
  return { laws: Laws.find({}).fetch() };
}, LawsList);

Он вообще не возвращает компонент,У меня нет сообщения об ошибке, которое могло бы помочь!

Есть подсказка?

1 Ответ

0 голосов
/ 11 июня 2018

Ваш локальный lawlistcomponent компонент не получает реквизит в том виде, в котором он был передан на маршрут.В любом случае, я бы рекомендовал использовать встроенную функцию render для рендеринга компонента на маршрут (предположим, что вы используете React Router V4).Например:

<Route
  exact
  path='/'
  render={(props) => <LawsList {...props} anotherProp={value} />}
/>

Как описано в документации к маршрутизатору React :

. Это обеспечивает удобный встроенный рендеринг и перенос без нежелательного перемонтирования, описанного выше.Вместо того, чтобы создать новый элемент React для вас, используя компонент prop, вы можете передать функцию, которая будет вызываться при совпадении местоположения.Пропеллер рендеринга получает все те же реквизиты маршрута, что и опора рендеринга компонента.

Спасибо Йенс за ваше предложение.

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