Передать объект по ссылке в 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, например, идентификатор строки. Затем вы должны использовать этот идентификатор для выполнения поиска объекта.
можно передать объект по ссылке. Добавьте свои данные в запрос, а не 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)