push()/pop()/shift()/unshift()
forEach(item => {}): 遍历数组
filter(item => true/false): 遍历过滤返回一个子数组
map(item => newItem): 遍历返回一个对应的新数组
find(item => true/false): 遍历查找满足条件的第一个元素
findIndex(item => true/false): 遍历查找满足条件的第一个元素的下标
reduce((preTotal, item) => newTotal, initTotal): 遍历累计 [1, 3, 2, 7]
cookie由key和value组成的文本小数据
分类: 会话cookie和持久化cookie
由服务器端创建: res.cookie(key, value, {maxAge: 1000})
由浏览器端保存: 浏览器接收到新的cookie会自动保存(内存/文件)
使用: 浏览器发送请求时自动携带对应的cookie, 服务器端通过req读取: req.cookies.key
1). 路由组件和非路由组件
2). 容器组件和UI组件
api ajax请求后台接口
assets 共用资源文件夹
css
imgages
components UI组件
containers 容器组件
redux redux相关
actions.js
action-types.js
reducers.js
store.js
util 工具
index.js 入口
1). 使用谁发请求?
react库本身不可以
axios: 封装的XMLHTTPRequest, promise风格, 浏览器端和node服务器端
fetch: 较新的浏览器提供的新的ajax请求方式, 可以引入fetch.js来实现兼容处理
2). 在哪执行?
初始显示: componentDidMount()
交互: 事件回调函数/componentWillReceiveProps()
1)什么是路由?
a.一个路由就是一个映射关系(key:value)
b.key为路由路径, value可能是function/component
2)路由分类
a.后台路由: node服务器端路由, value是function, 用来处理客户端提交的请求并返回一个响应数据
b.前台路由: 浏览器端路由, value是component, 当请求的是路由path时, 浏览器端前没有发送http请求, 但界面会更新显示对应的组件
1). query参数
路由的path: /xxx
请求的路径: /xxx?name=tom&age=18
?后面的部分就是query参数: name=tom, age=18
2). param参数
路由的path: /xxx/:name/:age
请求的路径: /xxx/jack/18
param参数: name=jack, age=18
params.name, params.age # 8. 事件
1). 类型
原生DOM事件
自定义事件
2). 绑定事件监听
事件名/类型
事件回调函数: 接收数据并处理
3). 触发事件
事件名
数据
1). 方式一: 通过props传递
通过props可以传递一般数据和函数数据,
一般数据-->父组件向子组件
函数数据-->子组件向父组件通信
缺点: 只能一层一层传递/兄弟组件必须借助父组件
2). 方式二: 使用消息订阅(subscribe)-发布(publish)机制
实现库: PubSubJS
组件A: 发布消息(相当于触发事件)
组件B: 订阅消息, 接收消息, 处理消息(相当于绑定事件监听)
优点: 对组件关系没有限制