【问题标题】:With NextJS Link, How to pass object clientside?使用 NextJS 链接,如何传递对象客户端?
【发布时间】:2019-04-07 12:39:15
【问题描述】:

我有一个正在使用的 Link 组件,并且想将一个 JavaScript 对象传递给我要链接到的新页面。看来我可以传递原语,但不能传递对象。

也就是说,我想在下面做这样的事情,但我得到一个与 sessionData 关联的空字符串(session.id 和 session.sessionSlug 工作)。

                <Link
                    href={{
                        pathname: "/session", query:
                            {
                                sessionSlug: this.props.session.sessionSlug,
                                sessionId: this.props.session.id,
                                sessionData: this.props.session
                            }
                    }}
                    as={`session/${this.props.session.sessionSlug}`}>
                    <a>{this.props.session.title}</a>
                </Link>

https://nextjs.org/docs/#with-link

【问题讨论】:

    标签: reactjs next.js


    【解决方案1】:

    我认为你可以尝试 JSON.stringify 对象,然后 JSON.parse 将其返回

    例子

    pages/index.js

    import Link from 'next/link';
    
    export default () => {
      const object = {
        key1: 'value1',
        key2: 'value2'
      };
    
      return (
        <Link href={{ pathname: '/about', query: { object: JSON.stringify(object) } }}>
          <a>here</a>
        </Link>
      );
    };
    

    pages/about.js

    import { withRouter } from 'next/router';
    
    function About({ router: { query } }) {
      const object = JSON.parse(query.object);
    
      return (
        <div>
          about {object.key1} | {object.key2}
        </div>
      );
    }
    
    export default withRouter(About);
    

    希望这会有所帮助!

    【讨论】:

    • 是否有任何解决方案可以避免查询字符串出现在 URL 中?但用 id 代替?当会话对象存在时,像 Next 一样可以使它看起来像 /session/1
    • 没关系,但是当我从浏览器重新加载我的页面时,我丢失了我的对象。那么如何处理呢?
    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 2023-03-28
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多