-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
28 changed files
with
45,194 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | ||
|
||
# dependencies | ||
/node_modules | ||
/.pnp | ||
.pnp.js | ||
|
||
# testing | ||
/coverage | ||
|
||
# production | ||
/build | ||
|
||
# misc | ||
.DS_Store | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
|
||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
单例的useSocketIo有好一点的方式么 | ||
老师好 | ||
我们compose(connect(relsect)) | ||
绿色的vscode | ||
老师,redux 变化后是全局组件都会重新渲染吗 | ||
|
||
|
||
|
||
不知道redux中那里用compose了 | ||
|
||
中间件其实是一个enhancer可以增强createStore | ||
window.__REDUX_DEVTOOLS_EXTENSION__也是enhancer | ||
柯里化 是缓存参数 一次执行 compose 每个都会执行 | ||
将主线内容吧 张老师 | ||
感觉是函数的累加啊 | ||
把中间件的组合起来 | ||
我想问一下,就是我们的项目中没有用到 combineReduces ,他还是每个组件都建立了多个reduce和selector,这是咋做到的啊 | ||
应该是没有用global store,拆成了粒度更细的store吧 | ||
老师这个注释的快捷键是什么 | ||
以前的都是// | ||
/* | ||
action 有payload 怎么处理 | ||
回车 | ||
UMI:我就知道你这这群人在想什么 | ||
原来payload那里可以随便写,现在定死是payload了 | ||
长老牛皮 | ||
源码信手拈来 | ||
课程有录播么,一步小心错过了半小时 | ||
payload随意写 | ||
设计者早早的就想到了这些问题,预留了参数功能 | ||
执行,然后传args | ||
CreateThun | ||
|
||
|
||
如果我要在pre函数里面取到上次的状态该怎么取 | ||
redux-toolkit createAction 整理action | ||
抽离出来 | ||
不如写一个数组,在转变成这种对象 | ||
默认情况default怎么实现? | ||
第一个参数就说了默认值了啊 | ||
都不仔细听的么。。 | ||
这个 好像 和 dva 有点像 | ||
整体思路和dva基本相同 | ||
map | ||
|
||
欢迎大家来参加珠峰架构公开课,我是珠峰客服老师,本次课程是我们正式课一部分,想了解课程可以加我好友,获取课程大纲,和更多视频资料18910092296 | ||
匹配value | ||
欢迎大家来参加珠峰架构公开课,我是珠峰客服老师,本次课程是我们正式课一部分,想了解课程可以加我好友,获取课程大纲,和更多视频资料18910092296 | ||
欢迎大家来参加珠峰架构公开课,我是珠峰客服老师,本次课程是我们正式课一部分,想了解课程可以加我好友,获取课程大纲,和更多视频资料18910092296 | ||
太强了,逻辑清晰 | ||
清晰很多 啰嗦代码没了 | ||
蜗牛:清晰很多 啰嗦代码没了 | ||
|
||
|
||
不用自己写新对象 | ||
那它是怎么实现的 | ||
妙呀 | ||
越来越vuex了 | ||
我看我们还用到了 fromjs 这是为啥啊 ,感觉是不可变,又变成可变对象了 | ||
produce怎么做 | ||
实现代理对象和原生对象的转换 | ||
|
||
swr | ||
|
||
|
||
老师,之前在子组件中定义了一个useEffect, | ||
父组件的要是有状态变化,子组件的 state就重新赋值成初始值了是为什么啊 | ||
|
||
let [state,setState] = useState(0); | ||
setState(1); | ||
|
||
子组件调用setState(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,256 @@ | ||
|
||
npm install | ||
redux 状态管理 核心包 | ||
redux-logger 日志中间件 | ||
redux-thunk 函数中间件 | ||
@reduxjs/toolkit 工具包 | ||
express | ||
cors express的跨域中间件 | ||
axios 发请求 | ||
|
||
1 先看看老写法 | ||
然后一步步变成新写法 | ||
|
||
|
||
|
||
edux dev tool | ||
老师语速快进了么?? | ||
更快点才好 | ||
牛皮 | ||
越快越好,反正我又听不懂 | ||
这个语速我都快要听不清说的内容了,跟听rapper似的 | ||
多个reducer 参数是合并后的reducer 吗 后面会讲合并 | ||
应该是 | ||
什么叫纯对象呢 | ||
let obj = {}; | ||
let obj = new Object(); | ||
|
||
为什么promise不写在reducer里面? | ||
就跟纯函数一样 | ||
因为reducer 必须是纯函数 (1.没有副作用2.引用透明) | ||
谢谢 | ||
为什么要内置thunk而不是saga呢 | ||
多个库的二次整合? | ||
对象判断为啥要用原型? | ||
这样一讲感觉这个configureStore很简单清晰 | ||
redux中的compose是干啥用的 忘记了 | ||
|
||
|
||
redux中的compose是干啥用的 忘记了 | ||
有文档地址吗 | ||
toolkit 和其他的主要区别 和应用场景是什么 | ||
能再看下indexjs代码吗 | ||
课程讲一天吗 | ||
store的数据刷新会没掉吗 | ||
dva和这个有差别吗 非常像 | ||
函数组合 | ||
组合函数,管道 | ||
good | ||
柯里化 | ||
compose 和柯里化不一样吧 不一样 | ||
应该像反柯里化 | ||
不知道redux中那里用compose了 | ||
外包小菜鸟:不知道redux中那里用compose了 | ||
|
||
|
||
|
||
|
||
|
||
|
||
编码技巧真的很重要 | ||
少写很多switch 现在就像配置一样 配置key-value | ||
用umi的话,toolkit好集成里面吗 | ||
不是配置,是匹配,计算出来的 | ||
dva有的,它都有的 | ||
umi内置dva吧 | ||
有没有createThunkAction呢 | ||
dva好还是toolkit好 | ||
reducers在哪里 | ||
没看懂 | ||
复制一份出来把,不删掉 | ||
可以跟原有的做对比 | ||
代码别删啊,回来对比下 | ||
对 | ||
哈哈 | ||
欢迎大家来参加珠峰架构公开课,我是珠峰客服老师,本次课程是我们正式课一部分,想了解课程可以加我好友,获取课程大纲,和更多视频资料18910092296 | ||
越来越像了 | ||
初始化数据 | ||
简直是同父异母 | ||
貌似atom也是分开状态的 | ||
和dva modal一样了 | ||
这不就跟dav一样了,,, | ||
简直是同母异父啊 | ||
再来个effect 就和dva一摸一样了 | ||
有点vuex的味道了 | ||
vuex一点也不一样 | ||
和vuex也很像。。。 | ||
殊途同归 | ||
不用写常量 | ||
vuex是啥? | ||
vue的状态管理 | ||
看,又删掉了,张老能不能不删代码,留着我们做对比啊 | ||
报班啥都有,手把手教你 | ||
报班啥都有,手把手教你 | ||
老师肯定有洁癖 | ||
报班啥都有,手把手教你 | ||
代码洁癖 | ||
卡了 | ||
画面卡了 | ||
画面停止了 | ||
卡 | ||
点都不卡 | ||
画面不动了 | ||
? | ||
? | ||
刷新下就好了 | ||
刷新就可以了 | ||
刷新就可以了 | ||
不卡 | ||
A | ||
|
||
|
||
|
||
|
||
eactReduxContext 是哪的? | ||
最后一个讲完,时间也不早了,张老师也要休息。 | ||
react-redux中的 | ||
如果项目里请求的接口很多, 那么会有很多的中间件吗? | ||
老师思维太敏锐了 | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
data error isLoading 在这里是固定写法么?用的时候,成功取data,就行? | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
A | ||
Q | ||
老师沉浸在自己的世界 无法自拔 | ||
你们卡了 刷新吧 | ||
刷新好了 | ||
不卡 | ||
对 | ||
() | ||
欢迎大家来参加珠峰架构公开课,我是珠峰客服老师,本次课程是我们正式课一部分,想了解课程可以加我好友,获取课程大纲,和更多视频资料18910092296 | ||
业务逻辑 | ||
没有问题 | ||
能看懂 | ||
可以看懂 | ||
分别创建action和reducer | ||
逻辑清晰 | ||
休息一会儿? | ||
引入同一目录下不同文件 还可以这样写 ./ 学习了 | ||
因为默认读取index文件中的具名导出 | ||
哦哦 | ||
我还以为智能到读取不同文件了 | ||
|
||
name 相当于action的前缀 | ||
相当于命名空间 | ||
actions的key有可能会相同, 所以用name命名空间来区分 | ||
有点笨重,DVA的那套saga-model轻量级一点 | ||
欢迎大家来参加珠峰架构公开课,我是珠峰客服老师,本次课程是我们正式课一部分,想了解课程可以加我好友,获取课程大纲,和更多视频资料18910092296 | ||
分片有啥用呢 | ||
状态模块隔离 | ||
类似vuex中多modles | ||
拼接上自己的父级? | ||
modules | ||
vuex的namespace | ||
能做到数据持久化么 | ||
这就是传说中的拼爹嘛 | ||
是的 vuex中多模块 就是用namespace前缀 | ||
哈哈 | ||
对 | ||
拼爹 | ||
很形象 | ||
不再是无家可 | ||
|
||
|
||
|
||
能不能再简化一点, 只需要写createSlice, 然后用的时候一个函数可以自动帮忙注入进去 | ||
封装的越多 使用者就写更少代码 | ||
./ 是指多个不同文件还是index文件? | ||
./指的当前目录,会找当前目录下面的index.js文件 | ||
其实是index文件 | ||
对啊 感觉是index | ||
能听懂就是自己写不出来怎么办 | ||
|
||
看一下package.json | ||
现在只用react的redux hooks 就可以了吗?为什么还要用redux | ||
能用一个react组件封装 redux吗 | ||
离dva只差一个effect了 | ||
|
||
|
||
|
||
|
||
所以异步有两种方法,一个可以直接createClice里面直接写thunk,还一种用createAsyncThunk? | ||
|
||
|
||
|
||
为什么不用createApi | ||
createAsyncThunk怎么创建的actioncreator | ||
createAsyncThunk 自动派发三个action | ||
reduer需要你自己写 | ||
createApi | ||
连reducer也不需写的 | ||
那如果很多请求的话,这样每个请求都需要写三个reducer吗 | ||
是的。很麻烦 | ||
所以才有了createApi | ||
呜呜来晚了 | ||
一般只监听成功吧 | ||
concat是纯函数吧 要接收返回值吗? | ||
|
||
|
||
函数挂三个属性 | ||
感觉返回的promise 没有什么用安 | ||
|
||
|
||
|
||
|
||
|
||
|
||
流程没听太明白~ | ||
发送一个后台请求 | ||
请求前 | ||
请后后 | ||
|
||
payloadCreater 是哪来的? | ||
欢迎大家来参加珠峰架构公开课,我是珠峰客服老师,本次课程是我们正式课一部分,想了解课程可以加我好友,获取课程大纲,和更多视频资料18910092296 | ||
All | ||
如果一个接口依赖之前一个接口的返回值, 这种情况参数直接取store.getState()吗 | ||
妙啊 | ||
|
||
|
||
|
||
老师,是error不,不是data.error吧 | ||
一会 | ||
|
||
middleware: (getDefaultMiddleware) => | ||
getDefaultMiddleware().concat(pokemonApi.middleware), | ||
|
||
|
||
|
||
|
||
|
||
如果想对接口返回的数据做一些处理后再放入store怎么写 | ||
https://redux-toolkit.js.org/rtk-query/usage/examples | ||
该发言可能违规,仅老师可见 | ||
dispatch哪来的 | ||
|
||
|
||
Redux Toolkit Query缓存是在query订阅那里判断的吗? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
let express = require('express'); | ||
let cors = require('cors'); | ||
let app = express(); | ||
app.use(cors()); | ||
app.use((req,res,next)=>{ | ||
setTimeout(()=>{ | ||
if(false){ | ||
next(); | ||
}else{ | ||
next('接口出错'); | ||
} | ||
},1000); | ||
}); | ||
let todos = [{id:1,text:"吃饭"},{id:2,text:"睡觉"}]; | ||
app.get('/todos/list',(_req,res)=>{ | ||
res.json(todos); | ||
}); | ||
app.get('/todos/detail/:id',(req,res)=>{ | ||
let id = req.params.id; | ||
let todo = todos.find(item=>item.id === parseInt(id)); | ||
res.json(todo); | ||
}); | ||
app.listen(8080,()=>console.log(`服务在端口8080启动`)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
|
||
|
||
//compose | ||
function add1(str){ | ||
return str+1; | ||
} | ||
function add2(str){ | ||
return str+2; | ||
} | ||
//把多个函数组件成一个函数 | ||
function compose(add1,add2){ | ||
return function(str){ | ||
return add1(add2(str)); | ||
} | ||
} | ||
let result = compose(add1,add2)('zhufeng'); | ||
console.log(result); |
Oops, something went wrong.