Webpack提供了自己的导入方式require.include,但同时也支持commonjs规范或AMD规范的require语法,而Node.js使用的就是common.js,ES6的语法Import也会被Babel转化成commonjs格式或者是AMD格式。

ES6、CommonJS的导入是单例的;

单页应用默认直接加载出所有import的资源,所以:

JS中的全局调用和表达式总会一开始就被执行,可以使用require()/import()语法实现动态加载、按需加载。可以配合Lazy(https://reactjs.org/docs/code-splitting.html#reactlazy)实现React组件懒加载 —— Lazy的原理即Promise+高阶组件,在组件异步加载完成后将解析值赋值给全局对象。

CSS样式可能会被覆盖。

一句话理解react:事件\样式\选择器,只属于真实的DOM元素,Components最终被渲染成真实DOM。

在重用社区或自定义组件的时候,如果组件没有给出样式配置的钩子(Hooks),那么我们可以在浏览器调试工具中,先找出指定元素的选择器,然后去覆盖先前样式(Style)。

在Props和State发生改变的时候,组件会发生更新,至于如何被更新,可以查看“差分算法”;

组件生命周期: 挂载、卸载发生在页面加载和路由,更新发生在Props或State改变后;

受控组件: 像表单元素这样的,有状态,并将状态控制权交给React的元素称为受控组件,受控组件必须满足两个条件:① 表单元素;② 状态被React控制(显式的value属性)。所以如果你又想给出默认值又不想将表单元素变成受控组件,请使用defaultValue给出默认值;

使用JSX语法的JS文件必须导入React ---- import React from 'react';

{}类似于eval()、模板引擎、JS``模板变量,先执行(执行模板中的表达式或调用)再渲染(将表达式运行的结果渲染出来),所以要特别注意{}中需要的是函数还是函数调用()。

使用Node.js(服务端)的包在浏览器编译,会发生错误, 所以在npm install时要注意包的使用环境。 Failed to compile Module not found: Can't resolve 'XXX' in 'xxx.lib'

在这里插入图片描述

Functions are not valid as a React child. This may happen if you return a Component instead of from render. Or maybe you meant to call this function rather than return it. 函数作为React子函数无效。 如果从render props中返回{Component}而不是,则可能会发生这种情况。 或许你打算调用这个函数而不是返回它。

React.Children.only expected to receive a single React element child.,某个组件可以通过PropTypes作类型检查,限制属性类型

MyComponent.propTypes = {

children: PropTypes.element.isRequired

};

在redux中使用combineReducers时要注意其实现原理 —— 类似于如下代码: 一般实现:

const chatReducer = (state = defaultState, action = {}) => {

return {

chatLog: chatLog(state.chatLog, action),

statusMessage: statusMessage(state.statusMessage, action),

userName: userName(state.userName, action)

}

};

combineReducers实现

const combineReducers = reducers => {

return (state = {}, action) => {

return Object.keys(reducers).reduce(

(nextState, key) => {

nextState[key] = reducers[key](state[key], action);

return nextState;

},

{}

);

};

};

无论是针对哪个属性拆分出来的子reducer,在任意dispatch发生时,都会被执行,所以定义subReducer时要注意在内部根据action.type来判断执行路径,如果这种type的action不会影响subReducer对应的state.key,那么一定要直接返回该state.key。

最新文章

  1. [ASP.NET] 如果将缓存“滑动过期时间”设置为1秒会怎样?
  2. db2无法force掉备份连接的处理办法
  3. ElasticSearch与Spring Boot集成问题
  4. 第五章 springboot + mybatis
  5. jquery------提供灵活的方法参数
  6. centOS7 修改hostname
  7. Core Java Volume I — 3.4. Variables
  8. CLR C++ Set Word CustomDocumentProperties
  9. @repository注解
  10. Anndroid 开发架构读书笔记
  11. unix命令: ifconfig
  12. oomph
  13. 201521123029《Java程序设计》第十一周学习总结
  14. linkin大话设计模式--简单工厂
  15. Struts2 学习之小白开始
  16. TCP-IP详解笔记8
  17. class按传递时分析
  18. 使用ant优化android项目编译速度,提高工作效率
  19. matplotlib雷达图
  20. Java 几种调度任务的Timer、ScheduledExecutor、 开源工具包 Quartz、开源工具包 JCronTab

热门文章

  1. python好用的测试库-Nose
  2. 浅谈HASH长度拓展攻击
  3. 对Jenkinsfile语法说不,开源项目Jenkins Json Build挺你
  4. Agumaster页面样式就绪
  5. 发布jar包到服务器读取resource目录下文件
  6. [04] C# Alloc Free编程之实践
  7. Java简介以及入门
  8. python变量及简单数据类型
  9. 关于px、pt、em、rem四个单位的解释
  10. C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法