React TypeError:React.renderComponent不是函数

时间:2015-06-07 21:24:26

标签: reactjs render

在遵循构建简单应用程序的React教程之后,我收到了这个奇怪的消息。 http://blog.revathskumar.com/2014/05/getting-started-with-react.html

我使用bower来安装react并包含这样的脚本:

<script src="bower_components/react/react.js"></script>
<script src="bower_components/react/JSXTransformer.js"></script>

如教程中所示。 起初我以为脚本没有加载,但显然不是这样。 有什么问题?

6 个答案:

答案 0 :(得分:23)

现在是

ReactDOM.render(

并包含源文件:

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react-dom.js"></script>

这是来自React的警告:

Warning: React.render is deprecated. Please use ReactDOM.render from require('react-dom') instead.

答案 1 :(得分:17)

bower在本案例版本0.12.0中安装最新版本。

渲染函数约定发生了变化。

https://facebook.github.io/react/blog/2014/10/28/react-v0.12.html

  

已从我们所有的React.render *方法中删除了组件。

所以使用

    React.render(

而不是

   React.renderComponent(

答案 2 :(得分:7)

最近&#39; React.render()&#39;折旧因此请使用&#39; ReactDom.render()&#39;

import React from 'react';
import ReactDom from 'react-dom';
import App from './components/App.jsx';
require('./main.scss');

ReactDOM.render(<App />, document.getElementById('container'));

答案 3 :(得分:3)

我有同样的问题;我精确地遵循了教程,我遇到了同样的错误。

这些是为了让它发挥作用我需要做出的改变......

npm install --save react-dom

更改了index.jsx内容:

/** @jsx React.DOM */
'use strict'
var ReactDOM = require('react-dom')
var Hello = require('./Hello')
ReactDOM.render(<Hello />, document.getElementById('content'))

这就搞定了

我很反应,所以这可能不是最好的解决方案,但现在是我的。

编辑:我后来发现了另一个更近期的演练(可行) https://www.twilio.com/blog/2015/08/setting-up-react-for-es6-with-webpack-and-babel-2.html

答案 4 :(得分:1)

  1. 下载最新的React Starter Kit - &gt; https://facebook.github.io/react/downloads.html
  2. 在构建文件夹中使用react.js和react-dom.js文件。
  3. 而不是使用“text / jsx”代替使用“text / babel”,引用这个缩小的库 - &gt; https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js
  4. 以下是供您参考的完整脚本

    <div id="target-container"></div>
    
    <script src="build/react.js"></script>
    <script src="build/react-dom.js"></script>
    <script src="build/browser.min.js"></script>
    <script type="text/babel">
        var MyComponent = React.createClass({
            render: function(){
                return(
                    <h1>Sample text</h1>
                );
            }
        });
    
        ReactDOM.render(
            <MyComponent/>,
            document.getElementById('target-container')
        );
    </script>
    

答案 5 :(得分:0)

你应该写ReactDOM.render,而不是React.render

https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react.js
https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react-dom.js
https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js

这三个javascript是必需的