【问题标题】:How to add Relay QL value to isomorphic relay router如何将 Relay QL 值添加到同构中继路由器
【发布时间】:2017-01-29 03:55:02
【问题描述】:

我的应用程序需要本地化支持。我正在使用同构中继路由器。

const customQueries = {
  viewer: () => Relay.QL'
  fragment on JobSeekerEntry{
      language
  }
  '
};

export default [
    {
        path: '/',
        component: Index,
        queries: ViewerQueries,
        indexRoute: {
            component: Home,
            onEnter: ({params}, replace) => replace("/" + customQueries.viewer.lanaguage  ),
            queries: ViewerQueries,
            prepareParams: () => ({status: 'any'}),
        },
        childRoutes: [
            {
                path: "/:language",
                component: Home,
                queries: ViewerQueries,

            },
            {
                path: "/:language/status",
                component: Test,
                queries: ViewerQueries,

            },
            {
                path: '/:language/test/:user',
                component: Home,
                queries: ViewerQueries,
            },
        ],
    },
];

在上面的代码示例中,希望用户根据他/她的首选语言进行重定向。对于 SEO 支持,我想为英语显示 www.exmaple.com/en,为日语显示 www.example.com/jp 等。“en”和“jp”值来自 graphql(来自服务器)。我想将这些值分配为路由器参数。特别是当页面从服务器端呈现时。请帮我解决这个问题。

【问题讨论】:

    标签: reactjs router graphql relayjs


    【解决方案1】:

    您可以将ViewerQueires 定义为常量,并像这样将语言作为参数传递

    const ViewerQueries = {
      viewer: () => Relay.QL `query{post(postID: $language)}`,
    };
    

    你应该在组件页面上定义片段如下

    export default Relay.createContainer(Home, {
      fragments: {
        viewer: () => Relay.QL`
          fragment on JobSeekerEntry {
            language
          }
        `,
      },
    });
    

    【讨论】:

    • 请出示您的 schema.js 以获得更准确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2019-11-15
    • 1970-01-01
    • 2015-04-12
    • 2021-03-03
    • 2021-09-29
    • 2019-02-20
    相关资源
    最近更新 更多