react-document-meta

HTML meta tags for React-based apps. Works for both client- and server-side rendering, and has a strict but flexible API.

  • 所有者: kodyl/react-document-meta
  • 平台:
  • 许可证: MIT License
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

React Document Meta Build Status Coverage Status npm version

HTML meta tags for React-based apps. Works for both client- and server-side rendering, and has a strict but flexible API.

Built with React Side Effect


Installation

npm install --save react-document-meta

Note: React Side Effect requires React 0.14+ - and so does React Document Meta.

Using with React v0.13

Due to several deprecations and breaking changes to React, you'll have to use react-document-meta@^1.0.0.

Upgrading from 0.1.x to 1.x

As React Side Effect has been upgraded there is a few breaking changes, which is found in the changelog.

Features

  • Supports extending and nesting on any number of levels
  • Ability to auto generate some meta tags for open graph, twitter, and more

Usage

See example folder for a working sample.

import React from 'react';
import DocumentMeta from 'react-document-meta';

class Example extends React.Component {
  render() {
    const meta = {
      title: 'Some Meta Title',
      description: 'I am a description, and I can create multiple tags',
      canonical: 'http://example.com/path/to/page',
      meta: {
        charset: 'utf-8',
        name: {
          keywords: 'react,meta,document,html,tags'
        }
      }
    };

    return (
      <DocumentMeta {...meta}>
        <h1>Hello World!</h1>
      </DocumentMeta>
    );
  }
}

React.render(<Example />, document.getElementById('root'));

Nesting

In most real world use cases, you would like to set some defaults and modify, replace or add just some of the meta tags. react-document-meta always use the deepest data set, but you can add an extend attribute (<DocumentMeta {...metaData} extend />), to instruct the component to merge with the meta data specified one level up. You can add the extend attribute to as many DocumentMeta components you would like, but the chain needs to be complete.

Automatic Meta Tags

react-document-meta has the ability to generate meta tags based on the already provided meta data. Currently only open graph title, description and url is supported, which uses the data from title, description and canonical, and only in the case where the values has not been explicit set for og:title, og:description or og:url respectively.

Server Usage

When using react-document-meta in a project with server-side rendering, you would like to have the final meta data chunk available in your HTML output. You can achieve this by calling DocumentMeta.rewind().

Instead of getting a plain object, you can have the module return the meta as either React components or a HTML string. This is achieved by calling DocumentMeta.renderAsReact() or DocumentMeta.renderAsHTML().

import React from 'react';
import DocumentMeta from 'react-document-meta';

export default handler = (...args) => {
  ...
  const app = React.renderToString(components);
  const meta = DocumentMeta.renderAsHTML();
  const markup = `
    <html>
      <head>
        ${meta}
      </head>
      <body>
        <div id="app">
          ${app}
        </div>
      </body>
    </html>
  `
  ...
}

TODO:

  • Create full documentation
  • Improve flexibility for custom attributes

主要指标

概览
名称与所有者kodyl/react-document-meta
主编程语言JavaScript
编程语言Makefile (语言数: 3)
平台
许可证MIT License
所有者活动
创建于2015-05-01 10:52:03
推送于2021-03-04 22:58:18
最后一次提交2018-03-21 15:04:49
发布数17
最新版本名称v3.0.0-beta.5 (发布于 2018-03-21 15:04:49)
第一版名称v0.1.1 (发布于 2015-05-06 10:30:14)
用户参与
星数320
关注者数6
派生数19
提交数115
已启用问题?
问题数41
打开的问题数11
拉请求数3
打开的拉请求数2
关闭的拉请求数3
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?