如何使用纯React应用程序设置NetlifyCMS

时间:2018-09-21 08:41:16

标签: reactjs netlify netlify-cms

我有一个react.js应用程序,我想添加netlify CMS后端。我在这里按照安装指南进行操作:https://www.netlifycms.org/docs/add-to-your-site/,但是当我导航到mysite / admin时,仅获得了我的网站。我改变了我的react-router,并netlify _redirect文件,并尝试将脚本标签放在主体中,就像这个仓库一样:https://github.com/Jinksi/netlify-cms-react-starter,但是现在我只得到了一个白屏。 Jinksi似乎竭尽全力来完成这项工作,使用头盔等。在netlifyCMS网站上,有使用Gatsby等的示例,但没有一个使用纯React。在这一点上,有没有简便的方法可以做到这一点?还是应该使用Gatsby.js重新编写我的网站?

1 个答案:

答案 0 :(得分:2)

在回答此问题时(v2.1.3),

NetlifyCMS不支持成为您的react应用程序中的组件。只要不尝试使用Linkreact-router,就可以使用react-router将其添加到react应用中。 NetlifyCMS是它自己的React应用程序,并且拥有自己的路由和样式,如果您现在将其作为组件导入,则会干扰您的React应用程序。

创建简单入门(or fork on GitHub

创建一个create-react-app

npx create-react-app netlify-cms-cra-simple
cd netlify-cms-cra-simple

将NetlifyCMS应用程序的资产添加到public/admin

public/admin/index.html

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Content Manager</title>
</head>
<body>
  <!-- Include the script that builds the page and powers Netlify CMS -->
  <script src="https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js"></script>
</body>
</html>

public/admin/config.yml

backend:
  name: github
  repo: talves/netlify-cms-cra-simple

media_folder: "public/images"
public_folder: "images"

collections:
  - name: settings
    label: Settings
    files:
      - file: public/manifest.json
        name: manifest
        label: 'Manifest Settings'
        fields:
          - name: short_name
            label: 'Short Name'
            widget: string
            required: true
          - name: name
            label: 'Name'
            widget: string
            required: true
          - name: start_url
            label: 'Start URL'
            widget: string
            default: '.'
            required: true
          - name: display
            label: 'Display Type'
            widget: string
            default: 'standalone'
            required: true
          - name: theme_color
            label: 'Theme Color'
            widget: string
            default: '#000000'
            required: true
          - name: background_color
            label: 'Theme Color'
            widget: string
            default: '#FFFFFF'
            required: true
          - name: icons
            widget: list
            label: 'Icons'
            allow_add: true
            fields:
              - widget: string
                name: src
                label: Source
              - widget: string
                name: sizes
                label: 'Sizes'
              - widget: string
                name: type
                label: 'Mime Type'

images上为您的静态图片位置创建一个public/images文件夹

repo中更改config.yml的名称,并将更改提交到您的存储库。

使用yarn start启动cra应用,然后在浏览器中导航至http://localhost:3000/admin/

添加React-Router(see react-router branch[Demo]

react-router-dom依赖项添加到您的项目(yarn add react-router-dom) 将App代码移至名为Home的新组件。 新的App.js

import React, { Component } from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Home from './Home';

class App extends Component {
  render() {
    return (
      <Router>
        <Switch>
          <Route exact path="/" component={Home} />
        </Switch>
      </Router>
    );
  }
}

export default App;

注意:

  • 上面的config.yml只是编辑manifest.json的文件集合的一个示例。阅读docs为您的网站设置适当的config.yml
  • 您需要setup an authentication provider才能在托管站点上使用NetlifyCMS