React学习(一) 初识React

React介绍

React是一个声明式的高效的,并且灵活的用于构建 用户界面 的 JavaScript 库。学习一个新的东西建议多看文档 英文文档,英文不好的同学可以看 中文文档(缺点是跟新不同步)。

React使用

React 使用有两种方式:

  1. 在已有项目中添加React。
  • 添加一个DOM容器到HTML中
    <!--- existing HTML --->
    <div id="root"></div>
    <!--- existing HTML --->
    
    这个id 就是将来我们React 组件挂载的位置,你可以创建多个div容器,但React 都需要挂载在对应id容器中。
  • 添加Script标签
      <!-- ... existing HTML ... -->
    
      <!-- 加载 React. -->
      <!-- 注意:部署时,将"development.js"替换为"production.min.js"。 -->
      <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
      <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
    
      <!-- 加载我们 React 组件。 -->
      <script src="root.js"></script>
    
    </body>
    
    前两个标签加载React,第三个加载你的组件代码
  • 创建自己的组件
      'use strict';
      const e = React.createElement;
    
      class LikeButton extends React.Component {
        constructor(props) {
          super(props);
          this.state = { liked: false };
        }
    
      render() {
       if (this.state.liked) {
         return 'You liked this.';
       }
      return e(
        'button',
         { onClick: () => this.setState({ liked: true }) },
         'Like'
        );
      }
    }
    const domContainer = document.querySelector('#like_button_container');
    ReactDOM.render(e(LikeButton), domContainer);
    
    这面就是我们自己的react组件,先大概了解一下,我们后续再详细讲解React组件的写法。底部的两行代码是一定要有的不然放不到HTML中。
  1. 创建一个新的React App(Create React App)
    Create React APP 是学习React最舒适的环境,并且是构建新的单页 应用程序的最佳方式。
    你需要在你的机器上安装 Node >= 6 和 npm >= 5.2。 要创建项目,请运行:
      npx create-react-app [项目名称] 
      cd [项目目录]
      npm start 或者 yarn start
    

注意npx 不是拼写错误,是npm 5.2+ 附带的包运行工具。

React目录介绍

react-dir.png

根据这张目录图来给大家介绍一下一次是什么意思。

  1. node_modules 这个做前端的都应该知道是npm下载的依赖包。

  2. public 这个是公共目录,里面放一些资源文件后者自己下载的第三方内容

    • favicon.ico 这个文件是浏览器的左上角图标,你也可以换成你自己的图标,但是名字必须保持一致。
    • index.html 这个就是我们的入口文件啦,以后上线的也是这个文件。里面的
      <div id="root"></div> 这个就和我们上面讲的一样React容器。其他的内容都是HTML代码,但是有一点 <link rel="manifest" href="%PUBLIC_URL%/manifest.json">这一行代码我们需要注意。下面我们来讲解。
    • mainifest.json 这个如果不了解PWA的同学可能不是很清楚。这个是实现PWA的配置文件,可以在桌面生成图标,方便下次访问,也可以在断网的情况下继续浏览之前浏览的内容。在我们刚开始学习的时候这个文件可以忽略或者删除,当然删除的时候需要连同index.html中的 <link rel="manifest" href="%PUBLIC_URL%/manifest.json">这一行代码一并删除。
  3. src 我们开发的主要目录,业务逻辑,页面等等都放在这个文件夹下面,我们在这里找不到 .html 后缀的文件是因为React 说了一切都是 JS。

    • App 这个包括 App.js, App.css 这个就是我们写的React组件了,App.js 文件就是组件的内容。大家可以打开浏览一下。需要注意一点是在文件最后的 export default App 组件导出,方便我们在其他地方引用。

这里的render 函数 和我们上面的直接应用的写法不一样,原因是上面的原生写法React.createElement 方法,而我们这个目录中的是JSX写法。这里有个转化就是涉及到我们之后的内容虚拟DOM,我们之后在讲。

这里有一个App.test.js文件是做测试的,看过App.js之后你会发现我们写的代码是函数式编程,这个很方便自动化测试。直接调用方法,查看返回结果和预期结果是否一致就可以验证函数是否正确。当然 在你学习的时候是不需要的,你可以直接删除此文件。

  • index 这个就是整个项目的入口了,打开后你会发现很简单除了引入React 和 ReactDom,导入App组件,引入css文件之外 就一行代码ReactDOM.render(<App />, document.getElementById('root')); 作用就是把App组件挂载到我们的index.html中的root 容器中。这样一个React app的项目就可以运行起来了。

有人可能发现我漏掉了 import * as serviceWorker from './serviceWorker';serviceWorker.unregister(); 这两行,他们的作用依旧是PWA的内容,有兴趣的同学可以自行去学习。

  1. .gitignore 文件是git上传到远程仓库的时候的忽略文件,里面可以配置你不想提交到远程仓库的文件名称。不了解的同学可以去学习阮一峰老师的Git教程。

  2. package.json 这个大家就很熟悉了,里面都是我们安装的依赖,当然也可以在里面配置环境代理或者更改访问端口。

  3. README.md 这个就是关于当前项目的介绍文档了,里面的内容你可以都删除掉,写你自己的文档介绍,当然,要遵循Markdown的语法规范。

  4. yarn.lock 这个是yarn安装的包的依赖,因为create-react-app默认是用yarn安装,所有会有这个文件生成。

第一个React 页面

现在,我们在命令行里找到当前项目目录,运行 npm start 或者 yarn start 会自动打开浏览器访问 loaclhost:3000 这个页面。

react-page.png

我们到App.js 里添加Hello world,

  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          {<!-- 添加Hello World!-->}
          <h1>Hello World!</h1>
          <a
            className="App-link"
            href="https://reactjs.org"
            target="_blank"
            rel="noopener noreferrer"
          >
            Learn React
          </a>
        </header>
      </div>
    )
  }

上面的代码中添加Hello World,然后保存,我们就完成自己的第一个React 组件啦。


react-page2.png

这里还有一个知识点就是在JSX中添加注释,有两种方式。一是 {!<-- 代码注释 -->} 就是JSX的解析语法{} 加 HTML的代码注释。二是下面这种单行注释。但是注意一定要回车换行,原因是 \\ 会把后面的内容注释掉,程序就错误了。

{
// 这样来添加注释 
}

结束语

通过上面的一系列操作,我们大概知道了React 的一些基本情况,并且简单修改App.js 文件来生成我们自己的Hello World!。你是否有收获呢?

接下来我们会深入讲一些React的内容,请持续关注把。

如果喜欢请多多关注 或点👍。 如有不足还请指教。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,472评论 25 707
  • React.js 小书学习 之 【使用 JSX 描述 UI 信息】 从 JSX 到页面 过程图解:JSX 到页面过...
    zdlucky阅读 1,268评论 0 20
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,691评论 2 59
  • 摄影|陵子
    陵子心语阅读 318评论 0 3
  • 三十岁的王平和在外企工作的老婆已经结婚七年了,七年之痒对很多夫妻来说都是一个过不去的坎儿,王平也不例外,更何况他已...
    72把刀阅读 12,541评论 2 3