我是React和Javascript的新手,我正在尝试渲染以下React组件:

'use strict';
var React = require('react');
import ToReadList from './toreadlist.js';

var ToRead = React.createClass({
getInitialState: function() {
    return { bookTitles: [] };
},
handleSubmit: function(e) {
    e.preventDefault();
    this.state.bookTitles.push(React.findDOMNode(this.refs.bookTitleInput).value.trim());
    this.setState({items: this.state.bookTitles});
},
render: function() {
    return (<div>
        <form onSubmit={this.handleSubmit}><input type="text" ref="bookTitleInput"></input>
            <input type="submit"></input></form>
            <ToReadList bookTitles={this.state.bookTitles} />
    </div>
           );
}
});

module.exports = ToRead;

但是我的控制台出现以下错误:“ Uncaught TypeError:无法读取未定义的属性'toUpperCase'”

我尝试调试(因为错误对我来说是晦涩的,并且我的代码中没有显示任何行),并注意到以下特定行:
this.state.bookTitles.push()

导致错误。

请帮忙!

编辑
该错误是由webpack var注入(inject)函数引起的:
function autoGenerateWrapperClass(type) {
      return ReactClass.createClass({
        tagName: type.toUpperCase(),
        render: function() {
          return new ReactElement(
            type,
            null,
            null,
            null,
            null,
            this.props
          );
        }
      });
    }

最佳答案

findDOMNode()使用toUpperCase()函数,该函数实际上是在null上调用的。

示例

var x = null
x.toUpperCase()// results in this error.

如果您可以发布findDOMNode()代码,我们可以找出错误。



确保在toUpperCase()上调用了non-null object

关于javascript - 未捕获的TypeError : Cannot read property 'toUpperCase' of undefined react state item,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30643604/

10-09 17:00