2017-03-27 129 views
1

這是一個簡單計數器的代碼。多次渲染組件React.js

但是,當我渲染視圖我沒有得到任何輸出。請告訴我代碼有什麼問題。

該按鈕被按下,計數器遞增並呈現在屏幕上。

var Title = React.createClass({ 

    getInitialState : function(){ 
    return {count:0}; 
    }, 
    increment : function(){ 

    this.setState({count:this.state.count+this.props.incVal}); 
    }, 
    render: function() { 
    return (
     <div> 
     <h1 >Count : {this.state.count}< /h1> 
     <button onClick={this.increment} >Increment</button> 
     </div> 
    ); 
    } 
}); 




var MultiButton = React.createClass({ 
    render : function(){ 
    return(
     <Title incVal={1}/> 
     <Title incVal={5}/> 
    ); 
    } 
}); 

ReactDOM.render(<MultiButton /> , 
    document.getElementById('example') 
); 
+0

除了通過以下拉斐爾正確的答案,反應過來也顯示在瀏覽器控制檯不錯的錯誤信息(在按下'F12'打開大多數瀏覽器)。在出現問題時,查看瀏覽器控制檯中的錯誤日誌可能是一種很好的做法。 – Leone

回答

0

您不能返回從陣營級以上的元素。如果你有一個以上的元素在一個單一的div包裹他們像

var MultiButton = React.createClass({ 
    render : function(){ 
    return(
     <div> 
      <Title incVal={1}/> 
      <Title incVal={5}/> 
     </div> 
    ); 
    } 
}); 
+0

我完全忘記了這一點,謝謝 –

1

來自official documentation

<div> 
    Here is a list: 
    <ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    </ul> 
</div> 

一個陣營組件不能返回多個反應的元素,但單一的 JSX表達可以有多個孩子,所以如果你想要一個組件 呈現多事情,你可以像一個div把它包這個。

var MultiButton = React.createClass(
    { 
    render: function() { 
     return (
     <Title incVal={1}/> 
     <Title incVal={5}/> 
    ); 
    } 
    } 
); 

更改爲

var MultiButton = React.createClass(
    { 
    render: function() { 
     return (
     <div> 
      <Title incVal={1}/> 
      <Title incVal={5}/> 
     </div> 
    ); 
    } 
    } 
); 
0
var Title = React.createClass({ 

    getInitialState : function(){ 
    return {count:0}; 
    }, 
    increment : function(){ 

    this.setState({count:this.state.count+this.props.incVal}); 
    }, 
    render: function() { 
    return (
     <div> 
     <h1 >Count : {this.state.count}< /h1> 
     <button onClick={this.increment.bind(this)} >Increment</button> 
     </div> 
    ); 
    } 
}); 




var MultiButton = React.createClass({ 
    render : function(){ 
    return(
     <Title incVal={1}/> 
    ); 
    } 
}); 

ReactDOM.render(<MultiButton /> , 
    document.getElementById('example') 
);