Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="//fb.me/react-0.9.0.min.js"></script>
  <meta charset="utf-8">
  <title>React.js tests</title>
</head>
<body>
  <h1>Test (check console for events)</h1>
  <div id="app"></div>
</body>
</html>
 
/** @jsx React.DOM */
var App = React.createClass({
  getInitialState: function(){
    return {lines: ["this is line 1", "this is line 2" , "this is line 3"]};
  },
  render: function(){
    return (
        <div>
          <h2>3 ComponentB inside ComponentA</h2>
          <p><i>no events if you edit the lines</i></p>
          <ComponentA 
            lines={this.state.lines}/>
          <h2>Component B alone</h2>
          <p><i>you do get the events if you edit the line</i></p>
          <ComponentB data={this.state.lines[0]}/>
          <hr/>
        </div>
    );
  }
});
var ComponentA = React.createClass({
    render: function(){
        return (
          <div
            contentEditable>
            { 
              this.props.lines.map(function(line,i) {
                return <ComponentB key={i} data={line} />  
              })
            }             
          </div>
          );
    }
});
var ComponentB = React.createClass({
  render: function() {
    return (
      <div 
           contentEditable 
           onKeyDown={this.handleKeyDown}>{this.props.data}</div>
    );
  },
  handleKeyDown: function(e) {
    console.log("B: " + e.type +"-" + e.which);
  }
});
React.renderComponent(
  <App />,
  document.getElementById('app')
);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
pcarionpro
0viewers