小生愛


  
            const log = (...value) => console.log(...value)

            import ReactDOM from 'react-dom'
            import React, { Component, PropTypes } from 'react';

            const UserGreeting = props => {
              return <h3>小花</h3>
            }

            const GuestGreeting = props => {
              return <h3>小蓝</h3>
            }

            // 根据条件判断输出哪个组件
            const Greeting = props => {
              const isLoggedIn = props.isLoggedIn

              if (isLoggedIn) {
                return <UserGreeting />
              }
              return <GuestGreeting />
            }

            ReactDOM.render(
              <Greeting isLoggedIn={false} />,
              document.querySelector('#box')
            )




            const log = (...value) => console.log(...value)

            import ReactDOM from 'react-dom'
            import React, { Component, PropTypes } from 'react';

            // 登陆组件
            const LoginButton = props => {
              return (
                <button onClick={props.onClick}>
                  Login
                </button>
              )
            }

            // 登出组件
            const LogoutButton = props => {
              return (
                <button onClick={props.onClick}>
                  Logout
                </button>
              )
            }

            class LoginControl extends Component {
              constructor (props) {
                super(props)
                this.state = {isLoggedn: false}
              }

              handleloginClick () {
                this.setState({
                  isLoggedIn: true
                })
              }

              handleLogoutClick () {
                this.setState({
                  isLoggedIn: false
                })
              }

              render () {
                const isLoggedIn = this.state.isLoggedIn
                let button = null
                
                // 给LogoutButton组件 绑定onClick属性 供LogoutButton组件调用 
                if (isLoggedIn) {
                  button = <LogoutButton onClick={this.handleLogoutClick.bind(this)} />
                } else {
                  button = <LoginButton onClick={this.handleloginClick.bind(this)} />
                }

                return (
                  <div>
                    { button }
                  </div>
                )
              }
            }

            ReactDOM.render(
              <LoginControl />,
              document.querySelector('#box')
            )            
            



            const log = (...value) => console.log(...value)

            import ReactDOM from 'react-dom'
            import React, { Component, PropTypes } from 'react';

            const messages = ['React', 'Re', 'Vue', 'ECMA6']

            const Mailbox = props => {
              const messages = props.message

              // JSX里想写javascript 必须带{} 
              return (
                <div>
                  {messages.length > 0 && <h2>{messages.length}</h2>}
                </div>
              )
            }

            ReactDOM.render(
              <Mailbox message={messages} />,
              document.querySelector('#box')
            )




            const log = (...value) => console.log(...value)

            import ReactDOM from 'react-dom'
            import React, { Component, PropTypes } from 'react';

            // Button 组件
            const Button = props => {
              return (
                <button onClick={props.onClick}>Submit</button>
              )
            }

            // ButtonClick 组件
            class ButtonClick extends Component {
              constructor(props) {
                super(props);
                this.state = {
                  isLoggedIn: false
                }
              }

              handleLogin (props) {
                this.setState({
                  isLoggedIn: true
                })
              }

              render () {
                const isLoggedIn = this.state.isLoggedIn
                // JSX中可以使用三目运算符
                // 给Button组件 绑定onClick属性 供Button组件调用
                return (
                  <div>
                    { isLoggedIn ? '输出真' : '输出假' }
                    <Button onClick={ this.handleLogin.bind(this) } />
                  </div>
                )
              }
            }

            ReactDOM.render(
              <ButtonClick />,
              document.querySelector('#box')
            )




            const log = (...value) => console.log(...value)

            import ReactDOM from 'react-dom'
            import React, { Component, PropTypes } from 'react';

            const WarningBanner = props => {
              if (!props.warn) {
                return null
              }

              return (
                <div className="warning">
                  Warning!
                </div>
              )
            }

            class Page extends Component {
              constructor(props) {
                super(props);
                this.state = {showWarning: true}
              }

              handleToggleClick () {
                this.setState(prevState => ({
                  showWarning: !prevState.showWarning
                }))
              }

              render () {
                return (
                  <div>
                    <WarningBanner warn={this.state.showWarning} />
                    <button onClick={this.handleToggleClick.bind(this)}>
                      {this.state.showWarning ? 'Hide' : 'SHow'}
                    </button>
                  </div>
                )
              }
            }

            ReactDOM.render(
              <Page />,
              document.querySelector('#box')
            )