zoukankan      html  css  js  c++  java
  • 照着官方文档学习react

    不晓得啥情况,markdown在csdn识别错误?排版后面的代码被破坏了,正确的排版:https://ryan-miao.github.io/2017/08/03/react-tutorial-1/

    img_49a369b98ae955d49edf570f9c8de82a.jpg

    笨人学习法

    10000个小时策略来学习,因为笨。先照着官方文档敲一遍,写一遍。

    准备

    先要准备环境。搭建一个基于webpack的react环境:Hello ReactJS.

    一些要点

    我在想是否应该完整的记录照抄的过程呢。毕竟已经开始一段,前面的要不要补上?回头看以前写过的angularJS的博客,现在完全不会了,太久没用了。所以,还是记录基础以及关注的问题就好。

    1.1 基本格式

    react的模板文件后缀结尾为.jsx

    react可以采用html标签拼接的方式定义一个元素。比如:

    const element = <h1>Hello, world</h1>;

    假设页面有个div:

    <div id="root"></div>

    那么,reactJS可以这样渲染页面:

    const element = <h1>Hello, world</h1>;
    ReactDOM.render(
      element,
      document.getElementById('root')
    );
    • 需要引入react-dom.
    • element变量就是一个react的元素,一个组件,一个component.
    • 通过ReactDOM.render(reactElement, domElement)来渲染页面

    1.1 变量

    react可以使用一对大括号来包裹变量,与html拼接:

    function tick() {
      const element = (
        <div>
          <h1>Hello, world!</h1>
          <h2>It is {new Date().toLocaleTimeString()}.</h2>
        </div>
      );
      ReactDOM.render(
        element,
        document.getElementById('clock')
      );
    }
    
    setInterval(tick, 1000);
    • 大括号里的代码是js代码
    • element是一个react组件:component。可以看成由divh1,h2拼接的匿名组件。

    下面实践以上的代码。首先,由于采用单个元素测试,需要修改上次搭建好的环境。

    修改webpack.config.js

     module.exports = {
    -    entry: './app/index.js',
    +    entry: {
    +        app: './app/index.js',
    +        clock: './app/components/step1-element.jsx'
    +    },
         output: {
             path: path.resolve(__dirname, 'dist'),
    -        filename: 'index_bundle.js'
    +        filename: '[name].bundle.js',
         },

    意思是可以渲染多个打包后的js文件。分别定义entry就是需要单独打包的js。在filename就会根据entry的key来生成打包后的文件名。

    1.1.1 构建第一个react component

    创建app/components/step1-element.jsx
    ```js
    import React from 'react';
    import ReactDOM from 'react-dom';

    function Clock(props) {
    return (


    Step1, learn element and variable.


    It is {props.date.toLocaleTimeString()}.



    );
    }
    function tick() {
    ReactDOM.render(<Clock date={new Date()} />, document.getElementById('clock'));

    }
    setInterval(tick, 1000);
    ``- functionClock就是一个react component,和前面的element一样,都是react组件. - react component可以写成html标签的方式,但要求方法名必须大写,也即标签名必须大写。就是组件的用法。 - 组件Clock接收一个参数对象propsprops的属性可以通过标签上的变量来赋值。比如date就通过标签传入到functionClock里了。由此,像

    `这种拼接的标签肯定也是有function的,不过react库已经写好了。
    • react component必须有返回值,返回一段html代码,用圆括号包裹
    • html标签与js变量可以通过一对大括号的方式拼接起来

    修改app/index.html.添加一个我们用来测试div节点。这里主要用于clock
    ```diff

    • +


    • +





    唯有不断学习方能改变! -- Ryan Miao
  • 相关阅读:
    KafkaUtils.createDirectStream()参数详解
    Kafka ConsumerRecord Timestamp
    HBase简介
    KAFKA分区、生产者、消费者之间的关系
    Hive中实现SELECT TOP N的方法
    Hive数据模型之历史拉链表
    Scala模式匹配
    sqoop参数详解
    HIVE SQL产生的文件数量及参数调优
    Scala基础语法
  • 原文地址:https://www.cnblogs.com/twodog/p/12139679.html
Copyright © 2011-2022 走看看