4 掌握 JSX 基本语法

195 阅读3分钟

注意事项:

  1. ReactDOM.render 方法接受两个参数:一个虚拟 DOM 节点和一个真实 DOM 节点, 作用是将虚拟 DOM 挂载到真实 DOM。

eg:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="react.js"></script>
    <script src="react-dom.js"></script>
    <script src="babel.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <div id = "test"></div>
    <script type="text/babel">
ReactDOM.render(
  <span>我要修改这个内容!</span>,
  document.getElementById('example')
);
    </script>

    <script type = "text/babel">
  ReactDOM.render(
      // <h1>我是一个测试数据</h1>
      <p>我是一个段落</p>,
      document.getElementById('test')
  );
    </script>
  </body>
</html>
  1. React 组件语法
  2. 掌握 React 组件的基本写法
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="react.js"></script>
    <script src="react-dom.js"></script>
    <script src="babel.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
  class MyTitle extends React.Component {
    render() {
      return <h1>Hello World</h1>;
    }
  };

  ReactDOM.render(
    <MyTitle/>,
    document.getElementById('example')
  );
    </script>
  </body>
</html>

3.React 组件的参数 将字体的颜色设置为红色

  1. 学会向 React 组件传参数
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="react.js"></script>
    <script src="react-dom.js"></script>
    <script src="babel.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
  class MyTitle extends React.Component {
    render() {
      return <h1 style={{color: this.props.color}}>Hello World</h1>;
    }
  };

  ReactDOM.render(
    <MyTitle color="red" />,
    document.getElementById('example')
  );
    </script>
  </body>
</html>
  1. React 组件的状态
  2. 学会通过状态变动,引发组件的重新渲染。
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="react.js"></script>
    <script src="react-dom.js"></script>
    <script src="babel.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
  class MyTitle extends React.Component {
    constructor(...args) {
      super(...args);
      this.state = {
        name: '访问者'
      };
    }

    handleChange(e) {
      let name = e.target.value;
      this.setState({
        name: name
      });
    }

    render() {
      return <div>
        <input type="text" onChange={this.handleChange.bind(this)} />
        <p>你好,{this.state.name}</p>
      </div>;
    }
  };

  ReactDOM.render(
    <MyTitle/>,
    document.getElementById('example')
  );
    </script>
  </body>
</html>

5.React 组件实战

  1. 学会自己写简单的 React 组件。
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="react.js"></script>
    <script src="react-dom.js"></script>
    <script src="babel.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
  class MyTitle extends React.Component {
    constructor(...args) {
      super(...args);
      this.state = {
        text: 'World'
      };
    }

    handleClick() {
      this.setState({
        text: 'Clicked'
      });
    }

    render() {
      return <h1 onClick={this.handleClick.bind(this)}>
        {'Hello ' + this.state.text}
      </h1>;
    }
  };

  ReactDOM.render(
    <MyTitle/>,
    document.getElementById('example')
  );
    </script>
  </body>
</html>

6.React 组件的生命周期

  1. 掌握钩子方法的基本用法
  2. 掌握组件如何通过 Ajax 请求获取数据,并对数据进行处理
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="react.js"></script>
    <script src="react-dom.js"></script>
    <script src="jquery.js"></script>
    <script src="babel.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
  class MyList extends React.Component {
    constructor(...args) {
      super(...args);
      this.state = {
        loading: true,
        error: null,
        data: null
      };
    }

    componentDidMount() {
      const url = 'https://api.github.com/search/repositories?q=javascript&sort=stars';
      $.getJSON(url)
       .done(
        (value) => this.setState({
          loading: false,
          data: value
        })
      ).fail(
        (jqXHR, textStatus) => this.setState({
          loading: false,
          error: jqXHR.status
        })
      );
    }

    render() {
      if (this.state.loading) {
        return <span>Loading...</span>;
      } else if (this.state.error !== null) {
        return <span>Error: {this.state.error}</span>;
      } else {
        /* 你的代码填入这里 */
        return (
          <div>
            <p>API 数据获取成功</p>
            <p>改写代码,将结果显示在这里</p>
          </div>
        );
      }
    }
  };

  ReactDOM.render(
    <MyList/>,
    document.getElementById('example')
  );
    </script>
  </body>
</html>