Передать объект по ссылке в React router

можно ли передать объект через Link компонент в react-router?

что-то типа:
<Link to='home' params={{myObj: obj}}> Click </Link>

так же, как я бы прошел props С Parent to

5 ответов


так что мой окончательный вывод по этому вопросу заключается в том, что я не думаю что все правильно. Казалось естественным, просто передать мои данные через Link Так что я могу получить доступ к ним в моем Child компонент. As Колин Рамзи упоминалось, что есть что-то под названием state на Link но это не способ сделать это. Он будет работать нормально, когда данные передаются через Link только если пользователь нажимает на что-то и отвезли в Child компонент.

проблема приходит, когда пользователь обращается к url, который используется в Link тогда нет способа получить данные.

такое решение в моем случае был передать ID на Link params, а затем проверьте, если мой Store есть данные (пользователь обращается к нему через Link), а затем получение этих данных из Store.

или если данные не в Store вызов action для извлечения данных из API.


нет, вы не можете передать объект в params, поэтому я бы согласился с вами, что ваш лучший план-передать идентификатор в магазин, чтобы магазин излучал CHANGE событие, и компоненты запрашивают информацию в хранилище.


Это невозможно, вам нужно передать что-то, что может быть сохранено в URL, например, идентификатор строки. Затем вы должны использовать этот идентификатор для выполнения поиска объекта.


вы можете попробовать сериализовать его JSON, а затем де-сериализовать его на принимающей стороне.


можно передать объект по ссылке. Добавьте свои данные в запрос, а не params и stringify объект:

<Link to={{ pathname: `/blog/${post.id}`, query: {
  title: post.title, 
  content: post.content,
  comments: JSON.stringify(post.comments)
} }}>Read More...</Link>

затем в вашем дочернем компоненте проанализируйте строку обратно в объект:

JSON.parse(this.props.comments)