Пропустить объект через Link in response router
Можно ли передать объект через компонент Link
в agent-маршрутизаторе?
Что-то вроде:
<Link to='home' params={{myObj: obj}}> Click </Link>
Точно так же, как я передал бы props
из компонента Parent
в Child
.
Если это невозможно, то лучший способ добиться этого:
У меня есть приложение React + Flux, и я делаю таблицу с некоторыми данными. То, что я пытаюсь сделать, - это когда я нажимаю на одну из строк, на которую мне потребуется часть деталей для этой строки. Строка содержит все необходимые мне данные, поэтому я подумал, что было бы здорово, если бы я мог просто передать ее через Link
.
Другой вариант - передать id
строки в URL-адресе, прочитать его в компоненте детали и запросить данные из хранилища по идентификатору.
Не уверен, что лучший способ достичь вышеуказанного...
Ответы
Ответ 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>