浅析 react

  1. JSX

    1. 注释:在一个组件的子元素位置使用注释要用 {} 包起来

      1. const App = (
         <Nav>
         {/* 节点注释 */}
         <Person
         /* 多行
         注释 */
         name={window.isLoggedIn ? window.name : ‘‘}
         />
         </Nav>
        ); 

          但 HTML 中有一类特殊的注释——条件注释,它常用于判断浏览器的版本:

      2. <!--[if IE]>
         <p>Work in IE browser</p>
        <![endif]-->

          上述方法可以通过使用 JavaScript 判断浏览器版本来替代:

      3. {
         (!!window.ActiveXObject || ‘ActiveXObject‘ in window) ?
         <p>Work in IE browser</p> : ‘‘
        } 
    2. 元素属性  
      1. class 属性改为 className
      2. for 属性改为 htmlFor
    3. React 组件的构建
      1. React 组件即为组件元素
      2. React 组件基本上由 3 个部分组成——属性(props)、状态(state)以及生命周期方法
      3. React 组件可以接收参数,也可能有自身状态。一旦接收到的参数或自身状态有所改变,
        React 组件就会执行相应的生命周期方法,最后渲染。整个过程完全符合传统组件所定义的组件
        职责。
    4. React 组件的构建方法
        1. React.createClass

          1. const Button = React.createClass({
             getDefaultProps() {
             return {
             color: ‘blue‘,
             text: ‘Confirm‘,
             };
             }, 
            
             render() {
             const { color, text } = this.props; 
            
             return (
             <button className={`btn btn-${color}`}>
             <em>{text}</em>
             </button>
             );
             }
            });
            1. 在 0.14 版本发布之前,这一直都是 React 官方唯一指定的组件写法
            2. 只用写成 <Button />,就可以被解析成 React.createElement(Button) 方法来创建 Button
              实例,这意味着在一个应用中调用几次 Button,就会创建几次 Button 实例
        2. ES6 classes
          1. import React, { Component } from ‘react‘; 
            
            class Button extends Component {
             constructor(props) {
             super(props);
             } 
            
             static defaultProps = {
             color: ‘blue‘,
             text: ‘Confirm‘,
             }; 
            
             render() {
             const { color, text } = this.props; 
            
             return (
             <button className={`btn btn-${color}`}>
             <em>{text}</em>
             </button>
             );
             }
            }

            React 的所有组件都继承自顶层类 React.Component。它的定义非常简洁,只是初始化了
            React.Component 方法,声明了 props、context、refs 等,并在原型上定义了 setState 和
            forceUpdate 方法。内部初始化的生命周期方法与 createClass 方式使用的是同一个方法
            创建的。

      无状态函数(stateless function)

        1. function Button({ color = ‘blue‘, text = ‘Confirm‘ }) {
           return (
           <button className={`btn btn-${color}`}>
           <em>{text}</em>
           </button>
           );
          } 
          1. 无状态组件只传入 props 和 context 两个参数;也就是说,它不存在 state,也没有生命周
            期方法,组件本身即上面两种 React 组件构建方法中的 render 方法。不过,像 propTypes 和
            defaultProps 还是可以通过向方法设置静态属性来实现的。
          2. 在适合的情况下,我们都应该且必须使用无状态组件。无状态组件不像上述两种方法在调用
            时会创建新实例,它创建时始终保持了一个实例,避免了不必要的检查和内存分配,做到了内部
            优化。
时间: 2024-10-10 14:41:11

浅析 react的相关文章

浅析react中间件机制

看过react的人都知道, react是一个view层的展现库,要想实现对页面数据和路由的管理还需要配合其它的库.这其中最常用的就是redux和react-router库. 通过redux库能够统一管理页面数据,保证数据的单向流动,其大概流程是 用户触发页面交互,页面根据用户交互产生一个action并将这个action通过store的dispatch方法传给 sotre,store根据一定关系找到reducer,reducer根据action的type类型产生新的state值并将新产生的stat

浅析react中的react-router和react-router-dom

React路由实现有两个包: 1.react-router  https://reacttraining.com/react-router/ 2.react-router-dom 原文地址:https://www.cnblogs.com/jcxfighting/p/11664096.html

react相关问题

什么是JSX?--浏览器是如何识别它的? JSX是facebook普及的一种标记语言,通过babel/TSC等工具会编译为React.createElementfunction.所以在React每个组件中,虽然没有显式用到React,但都需要import React from 'react'. JSX是如何区分React Component和HTML元素的? 通过元素首字母的大小写,如果首字母大写,则认为是React组件,小写的话则会被认为是HTML元素.可以在online Babel comp

React Native Android Gradle 编译流程浅析

[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 前面已经发车了一篇<React Native Android 从学车到补胎和成功发车经历>,接着就该好好琢磨一下 React Native 周边了,没看第一篇的可以先去看看:这里我们先从 React Native 的 Android 编译来简单揭晓一下 React Native 在集成的过程中到底干了哪些不可告人的坏事:由于我们项目准备以 Gradle 形式接入

React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)

[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 有了前面<React Native Android 从学车到补胎和成功发车经历>和<React Native Android Gradle 编译流程浅析>两篇文章的学习我们 React Native 已经能够基本接入处理一些事情了,那接下来的事情就是渐渐理解 RN 框架的一些东西,以便裁剪和对 RN 有个更深入的认识,所以本篇总结了我这段时间阅读源码

React虚拟DOM浅析

转帖: http://www.alloyteam.com/2015/10/react-virtual-analysis-of-the-dom/?hmsr=toutiao.io&bsh_bid=928783684 在Web开发中,需要将数据的变化实时反映到UI上,这时就需要对DOM进行操作,但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因,为此,React引入了虚拟DOM(Virtual DOM)的机制. 什么是虚拟DOM? 虚拟DOM VS 直接操作原生DOM? 虚拟DOM VS MVVM?

前端知识 | React Native手势响应浅析

目前手机市场上,全面屏时代已经势不可挡,为了增大屏幕,一个个物理按键已渐渐消失在手机上.那么,手势将成为在移动应用开发中一个重要的组成部分,移动设备上手势识别要比 web 端复杂得多,往往用户的一个手势,我们在 APP 上要通过好几个阶段去判断用户的真实意图是什么,在 ReactNative (以下简称 RN)中针对手势处理也提供了从最基本的点击手势到复杂的滑动等一系列解决方案,让我们一起去看看. RN基本触控组件 RN 的组件除了 Text,其他组件默认是不支持点击事件的,也不能成为一个触摸事

Ajax语法浅析

Ajax是目前很普遍的一门技术,也是很值得探讨和研究的一门技术.本文将针对Ajax的发展过程并结合其在不同库框架中的使用方式来和大家分享下Ajax的那些新老语法. Ajax语法浅析 Ajax简介 Ajax全称为"Asynchronous Javascript And XML",即"异步JavaScript和XML"的意思.通过Ajax我们可以向服务器发送请求,在不阻塞页面的情况下进行数据交互,也可以理解为异步数据传输.在Ajax的帮助下我们的网页只需局部刷新即可更新

react初识

如下是在研究中记录的笔记: 1,作用:局部的更新dom结构;虚拟dom保证性能2,和mvc不同,mvc是对于技术上的分离(分类),而react是组件上的分离,每个视图模块分离,复用,以视图模块为单位3,2的说法确实有所体现,而且,我感觉好像模板引擎啊,难道是我幼稚?4,浅析语法: html : <div id='box'></div> jsx <script type='text/babel'> js code... ReactDOM.render(html_jsx_d