Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div id="app"></div>
  <script src="https://fb.me/react-15.1.0.js"></script>
  <script src="https://fb.me/react-dom-15.1.0.js"></script>
</body>
</html>
 
class Root extends React.Component {
  constructor() {
    super();
    this.stateUpdate = this.stateUpdate.bind(this);
    console.log('Root constructor');
    
    this.state = {
      ok: 0
    };
  }
  
  componentWillMount() {
    console.log('Root componentWillMount');
  }
  
  componentDidMount() {
    console.log('Root componentDidMount');    
  }
  
  componentWillReceiveProps() {
    console.log('Root componentWillReceiveProps');    
  }
  
  shouldComponentUpdate(nextProps, nextState) {
    console.log('Root shouldComponentUpdate');    
    console.log(nextState.ok);
    return true;
  }
  
  componentWillUpdate() {
    console.log('Root componentWillUpdate');    
  }
  
  componentDidUpdate() {
    console.log('Root componentDidUpdate');    
  }
  
  componentWillUnmount() {
    console.log('Root componentWillUnmount');    
  }
  
  stateUpdate() {
    this.setState({ ok: this.state.ok += 1 });
  }
  
  render() {
    console.log('Root render');
    return (
      <div onClick={this.stateUpdate}>
        root : {this.state.ok}
        <Child id="two" />      
        <Child id="one" />
      </div>
    );
  }
}
class Child extends React.Component {
  constructor(props) {
    super(props);
    
    this.stateUpdate = this.stateUpdate.bind(this);
    
    console.log('Child constructor : ' + this.props.id);
    
    this.state = {
      ok2: 0
    };
  }
  
  componentWillMount() {
    console.log('Child componentWillMount : ' + this.props.id);
  }
  
  componentDidMount() {
    console.log('Child componentDidMount : ' + this.props.id);    
  }
  
  componentWillReceiveProps() {
    console.log('Child componentWillReceiveProps : ' + this.props.id);    
  }
  
  shouldComponentUpdate(nextProps, nextState) {
    console.log('Child shouldComponentUpdate : ' + this.props.id);    
    console.log(nextState.ok2);
    return true;
  }
  
  componentWillUpdate() {
    console.log('Child componentWillUpdate : ' + this.props.id);    
  }
  
  componentDidUpdate() {
    console.log('Child componentDidUpdate : ' + this.props.id);    
  }
  
  componentWillUnmount() {
    console.log('Child componentWillUnmount : ' + this.props.id);    
  }
  
  stateUpdate(e) {
    e.stopPropagation();
    this.setState({ ok2: this.state.ok2 += 1 });
  }
  
  render() {
    console.log('Child render : ' + this.props.id);
    return (
      <div onClick={this.stateUpdate}>
        Child : {this.state.ok2}
      </div>
    );
  }
}
ReactDOM.render(
  <Root />,
  document.getElementById('app'),
);
Output

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

Dismiss x
public
Bin info
syakuispro
0viewers