React

作者: 大写的空气 | 来源:发表于2021-08-06 15:28 被阅读0次

    React的Hello World

    //html文件
    <div id="root"></div>
    //js文件
    ReactDOM.render(
      <h1>Hello, world!</h1>
      document.getElementById('root')
    );
    

    也可以使用JSX语法实现

    const name = 'world!';
    const element = <h1>Hello, {name}</h1>;
    ReactDOM.render(
      element,
      document.getElementById('root')
    );
    

    JSX特定属性

    • 使用引号,来将属性值指定为字符串字面量
      const element = <div tableIndex="0"></div>;
    • 使用大括号,插入一个变量或表达式
      const element = <img src={user.avatarUrl}></img>
    • 标签里没有内容,可以使用/>来闭合标签
    • 通过将输入内容转义成字符串,有效防止XSS(跨站脚本)攻击
    • Babel会把JSX转译为一个名为React.createElement()函数调用
    const element = (<h1 className="greeting">Hello</h1>);
    //等于
    const element = React.createElement(
      'h1',
      {className: 'greeting'},
      'Hello'
    );
    

    每秒调用ReactDOM.render()的定时器例子

    function tick() {
      const element = (
        <div>
          <h1>Hello</h1>
          <h2>Now {new Date().toLocaleTimeString()}</h2>
        </div>
      );
      ReactDOM.render(element, document.getElementById('root'));
    }
    setInterval(tick, 1000)
    

    组件

    • 单一组件
    function Welcome(props) {
      return <h1>Hello, {props.name}</h1>
    }
    const element = <Welcome name="Sara"/>;
    ReactDOM.render(
      element,
      document.getElementById('root')
    );
    
    • 组合组件
    //输出多行文字信息
    function Welcome(props) {
      return <h1>Hello, {props.name}</h1>;
    }
    
    function App() {
      return (
        <div>
          <Welcome name="Sara" />
          <Welcome name="Cahal" />
          <Welcome name="Edite" />
        </div>
      );
    }
    
    ReactDOM.render(
      <App />,
      document.getElementById('root')
    );
    

    类组件

    每次组件更新时 render 方法都会被调用,但只要在相同的 DOM 节点中渲染 <Clock /> ,就仅有一个 Clock 组件的 class 实例被创建使用。这就使得我们可以使用如 state 或生命周期方法等很多其他特性

    class Clock extends React.Component {
      render() {
        return(
          <div>
            <h1>Hello</h1>
            <h2>It is {this.props.date.toLocaleTimeString()}</h2>
          </div>
        );
      }
    }
    function tick() {
      ReactDOM.render(
        <Clock date={new Date()} />,
        document.getElementById('root')
      );
    }
    setInterval(tick, 1000);
    

    使用State实现,内部变量

    class Clock extends React.Component {
      constructor(props) {
        super(props);
        this.state = {date: new Date()};
      }
    
      render() {
        return (
          <div>
            <h1>Hello, world!</h1>
            <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
          </div>
        );
      }
    }
    
    ReactDOM.render(
      <Clock />,
      document.getElementById('root')
    );
    
    

    快速创建React App

    npx create-react-app test
    cd test
    npm start
    

    Tic Tac Toe (codepen.io)在线编码
    nodjs下载地址
    创建新的 React 应用 – React (docschina.org)

    相关文章

      网友评论

          本文标题:React

          本文链接:https://www.haomeiwen.com/subject/szobvltx.html