2017-05-27 23 views
-1
  • 我試圖在響應中實現一個推箱。
  • 但我得到一個錯誤。 Uncaught TypeError:超級表達式必須爲null或函數,而不是未定義
  • 可以告訴我如何解決它。
  • 下面提供。

https://jsfiddle.net/q7yvmsa3/4/文本框未捕獲TypeError:超級表達式必須爲null或函數,而不是未定義

class TwitterBox extends React.component { 

    constructor(props) { 
     super(props); 
     this.state = { enteredTextBoxvalue : '' }; 

    } 

    // var textBoxValue = textbox.value(); 

    // var totalCount = textBoxValue.count(); 

    // if (totalCount > 140) { 

    // div.addCSS{ border: 1px solid red} 

    // } 


    render() { 
     return (<div>Hello {this.props.name} 
         <textarea value = "this.state.enteredTextBoxvalue"> 
          there should be only 140 characters 
        </textarea> 
     </div>); 
    } 



} 

ReactDOM.render(
    <Hello name="World" />, 
    document.getElementById('container') 
); 
+2

你必須要在React.component一個錯字(應該是大寫C) – Thiatt

+0

你在你的代碼有三個錯誤。我將它們修正爲:https:// jsfiddle。net/q7yvmsa3/7/ – zvona

+0

@zvona如果你解釋一下你所修復的東西,那將是非常棒的......所以將來我會自己去做 –

回答

2

變化:

React.component錯字,它應該是React.Component

2.動態值必須是內{},但你把它定義爲字符串:value = "this.state.enteredTextBoxvalue"應該value = {this.state.enteredTextBoxvalue}

您定義的組件的名稱TwitterBox,但渲染Hello

ReactDOM.render(<Hello/>,....) 

4.您正在使用controlled component(表示定義了value屬性textarea),所以定義一個onChange函數,並在其中更新state變量的值。

5.不要定義的textarea的孩子,如果你想那麼一些默認值由初始的state值。

檢查工作示例:

class TwitterBox extends React.Component { 
 
    
 
    constructor(props) { 
 
     super(props); 
 
     this.state = { enteredTextBoxvalue : '' }; 
 
     this.change = this.change.bind(this); 
 
    } 
 
    
 
    change(e){ 
 
     this.setState({enteredTextBoxvalue: e.target.value}); 
 
    } 
 
    
 
    render() { 
 
     return (
 
      <div> 
 
       Hello {this.props.name} 
 
       <textarea value={this.state.enteredTextBoxvalue} onChange={this.change}/> 
 
      </div> 
 
     ) 
 
    } 
 
} 
 

 
ReactDOM.render(
 
    <TwitterBox name='hello'/>,  
 
    document.getElementById('container') 
 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 

 
<div id='container'/>

+0

你好,你能告訴我爲什麼我們傳遞e內部的變化,沒有那個不能我們得到的文本框的價值....有這個問題很多次,但無法找到它:( –

+0

e是什麼但是一個事件對象,我們沒有通過它,它會自動通過更改方法傳遞,它將包含有關該元素的所有信息,請查看MDN doc瞭解更多詳細信息:https://developer.mozilla.org/en- US/docs/Web/Events/change –

+0

嘿,是否有任何圖表示...它的混亂:( –

2

你在你的代碼有三個錯誤。 (種類)的工作結果見https://jsfiddle.net/q7yvmsa3/7/

  1. 這是React.Component用大寫C
  2. 您添加的組件Hello,雖然你的組件被稱爲TwitterBox
  3. 您參考this.state.enteredTextBoxvalue引號內(使得它作爲字符串),但它應該在括號refered。

和額外注:需要以保持textarea的同步上的每個按鍵更新enteredTextBoxvalue狀態。

相關問題