Подтвердить что ты не робот

Пропустить объект через Link in response router

Можно ли передать объект через компонент Link в agent-маршрутизаторе?

Что-то вроде:
<Link to='home' params={{myObj: obj}}> Click </Link>

Точно так же, как я передал бы props из компонента Parent в Child.

Если это невозможно, то лучший способ добиться этого:
У меня есть приложение React + Flux, и я делаю таблицу с некоторыми данными. То, что я пытаюсь сделать, - это когда я нажимаю на одну из строк, на которую мне потребуется часть деталей для этой строки. Строка содержит все необходимые мне данные, поэтому я подумал, что было бы здорово, если бы я мог просто передать ее через Link.

Другой вариант - передать id строки в URL-адресе, прочитать его в компоненте детали и запросить данные из хранилища по идентификатору.

Не уверен, что лучший способ достичь вышеуказанного...

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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