2017-03-24 16 views
1

単純な例を、状態と反応して書きました。私はボタンを持っています。このボタンをクリックすると、メッセージを表示したいのですが、ビューに何も表示されず、コンソールにエラーも表示されません。おかげで状態が正常でない単純な反応の例

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
     <title>React State</title> 
     <script src="https://unpkg.com/[email protected]/dist/react-with-addons.js"></script> 
     <script src="https://unpkg.com/[email protected]/dist/react-dom.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script> 
    </head> 
<body> 
    <div id="clickableButton"></div> 

    <script type="text/babel"> 
     var myButton = React.createClass({ 
      getInitialState: function() { 
       return { clicked: false }; 
      }, 
      render: function() { 
        if(this.state.clicked) return <div><button onclick="{doClick}">Click me</button> Clicked!</div>; 
        else return <div><button onclick="{doClick}">Click me</button></div>; 
       } 
      }, 
      doClick: function() { 
       if(this.state.clicked) this.setState({ clicked: false }); 
       else this.setState({ clicked: true }); 
      } 
     }); 
     ReactDOM.render(<myButton />, document.getElementById("clickableButton")); 
    </script> 
</body> 
</html> 

答えて

2

あなたの括弧は、正しく一致render冗長ブレースを削除しないでください:

render: function() { 
    if(this.state.clicked) return <div><button>Click me</button> Clicked!</div>; 
    else return <div><button>Click me</button></div>; 
} << REMOVE THIS LINE 
}, 

また、あなたはあなたのコンポーネントのための資本ケースを使用するので、MyButtonmyButtonの名前を変更する必要があります。

var MyButton = React.createClass({ 
... 
ReactDOM.render(<MyButton />, document.getElementById("clickableButton")); 

これでうまくいくはずです。

+0

こんにちは、ありがとう!ボタンは表示されますが、クリックイベントは発生しません。

Hazlo8

+1

'onclick'の引用符を削除します。また、' onClick'にする必要があります: 'onClick = {this.doClick}' – CodinCat

+0

完璧、ありがとう!!! – Hazlo8

関連する問題