首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react中处理元标签?

如何在react中处理元标签?
EN

Stack Overflow用户
提问于 2019-06-15 18:14:32
回答 1查看 55关注 0票数 0

我正在试图弄清楚如何在我的网页上添加元标签,以使其能够被访问。

我的问题是meta标签依赖于异步操作的完成:

代码语言:javascript
复制
import * as React from 'react'
import { Dialog } from '@material-ui/core';
import { withRouter, RouteComponentProps } from 'react-router';
import gql from 'graphql-tag';
import { useQuery } from 'react-apollo-hooks';
import { SubmissionFocus } from './SubmissionFocus';
import MetaTags from 'react-meta-tags';
import { Submission } from '../../AppContext';

const SUBMISSION = gql`query submission($id: String!) {
    submission(id: $id) {
      url
      id
      title
      comments {
        id
        comment
        replyingCommentId
        username
      }
      tags
      embedVideo {
        type
        url
        width
        height
      }
      preview {
        url
        type
        width
        height
      }
    }
  }
`
const BaseRoutedSubmissionFocus = (props: RouteComponentProps) => {
  const path = props.location.pathname;
  const p = path.split('/').filter((s) => s !== "")
  let submissionId = p[0] == 's' && p[1]
  **const submission = useQuery(SUBMISSION, {
    variables: {
      id: submissionId
    },
    skip: submissionId === false
  })**

  const dismiss = () => {
    props.history.push("/");
  }

  if (p[0] !== 's')
    return <></>

  const sub: Submission | undefined = submission.data!.submission
  return <>
    {sub && <MetaTags>
      <title>Page 1</title>
      <meta name="description" content="Some description." />
      <meta property="og:title" content={sub.title} />
      <meta property="og:image" content={sub.preview.url} />
    </MetaTags>}

    < Dialog onClose={dismiss} open={!!submissionId
    }
      maxWidth="lg"
      fullWidth={true} >
      <div style={{ height: '90vh' }}>
        {!submission.loading && submission.data && <SubmissionFocus allowExpand={false} submission={sub} />}
      </div>
    </Dialog >
  </>
}

export const RoutedSubmissionFocus = withRouter(BaseRoutedSubmissionFocus);

useQuery是一个异步操作,在它完成加载之前,我没有元标签。

对此有什么想法吗?我在想,如果有一种方法可以延迟react发出任何html,直到某些操作完成,我就可以逃脱惩罚。

EN

回答 1

Stack Overflow用户

发布于 2019-06-16 00:30:50

我想您可以使用react-helmet来实现这一点:https://github.com/nfl/react-helmet

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56609392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档