[toc]
### 引入store
```
import {createStore, applyMiddleware} from 'redux'
import reducer from './reducer'
import thunk from 'redux-thunk' // 引入后 action 可以 return 一个方法,否则只能是对象
import { createLogger } from 'redux-logger' // 查看 store
const store = createStore(
reducer,
applyMiddleware(thunk, createLogger()),
); // 创建数据仓库
store.getState() // 获取 state 值
store.dispatch(action) // 直接dispatch action
export default store;
```
### action
action的两种写法,引入中间件 thunk前,返回一个对象, store.dispatch(action)
```
export const getInputChangeAction = (value) => ({
type: CHANGE_INPUT_VALUE,
value
})
const action = getInputChangeAction(e.target.value)
store.dispatch(action)
```
引入 thunk 后,可以返回一个方法,thunk相当于给 dispatch 做了升级
```
const action = getTodoList()
store.dispatch(action) // 直接执行,action 中的方法,其中方法中默认有一个dispatch,用来传递给 action
export const getTodoList = () => {
return (dispatch) => {
axios.get('http://127.0.0.1:3001/test').then(res => {
const action = initListAction(res.data)
dispatch(action)
})
}
}
export const initListAction = (data) => ({
type: INIT_LIST_ACTION,
data
})
```
### reducer
```
if (action.type === ADD_TODO_ITEM) {
const newState = JSON.parse(JSON.stringify(state))
newState.list.push(newState.inputValue)
newState.inputValue = '';
return newState
}
```
- 第一章:react 基础
- 1. 关于 react
- 2. react 工作原理
- 0. 开发环境搭建
- 1. 创建并使用一个组件
- 1. 模块化与组件化
- 2. 虚拟DOM
- 3. Diff 算法
- React 与 Vue 的使用差异
- 1. 组件创建方式
- 2. data 与 state
- 3. 方法使用方式&this
- 4. 数据双向绑定
- 5. props
- 6. ref
- 7. for 循环元素
- 8. 生命周期
- create-react-app 改为多页面应用
- react修改打包路径,直接查看
- redux
- context
- lazy 实现延迟加载静态属性
- Memo实现指定组件进行渲染
- React Hooks
- React Hooks 的概念和意义
- 使用 useState
- axios单次切换formdata和payreload
- react 动态绑定 class
- 高阶组件
- react设计模式