首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(译) 如何使用 React hooks 获取 api 接口数据

我们只想在组件第一次加载的时候获取数据 ,这也就是为什么你可以提供一个空数组作为 useEffect 的第二个参数以避免在组件更新的时候也触发它。当然,这样的话,也就是在组件加载的时候触发。...如果传递的是一个空数组,则仅仅在第一次加载的时候运行。 是不是感觉 ,干了shouldComponentUpdate 的事情 这里还有一个陷阱。...因为你提供的是一个空数组作为useEffect的第二个参数是一个空数组,所以effect hook 的触发不依赖任何变量,因此只在组件第一次加载的时候触发。...该类型告诉reducer功能需要应用哪个状态转换,并且reducer可以另外使用有效负载来提取新状态。毕竟,我们只有三个状态转换:初始化提取过程,通知成功的数据提取结果,并通知错误的数据提取结果。...它需要作用于三个不同的状态转换,称为FETCH_INIT,FETCH_SUCCESS和FETCH_FAILURE。每个状态转换都需要返回一个新的状态对象。

28.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

【React】211- 2019 React Redux 完全指南

你用过数组的 reduce 函数吗? 它是这样用的:你传入一个函数,遍历数组的每一个元素时都会调用你传入的函数,类似 map 的作用 —— 你可能在 React 里面渲染列表而对 map 很熟悉。...你的函数调用时会接收两个参数:上一次迭代的结果,和当前数组元素。它结合当前元素和之前的 “total” 结果然后返回新的 total 值。..." 你给 reduce 传入的函数理所应当被叫做 “reducer”,因为它将整个数组的元素 reduces 成一个结果。...Redux 基本上是数组 reduce 的豪华版。...我整理了一个如何在 Redux 里做 Immutable 更新完全指南,包含更新 state 中对象和数组的七个通用模式。 安装 Immer 在 reducers 里面使用也是一种很好的方式。

4.2K20

【React】945- 你真的用对 useEffect 了吗?

在函数组件主体内(这里指在 React 渲染阶段)改变 DOM、添加订阅、设置定时器、记录日志以及执行其他包含副作用的操作都是不被允许的,因为这可能会产生莫名其妙的 bug 并破坏 UI 的一致性。...初始状态是一个object,其中的hits为一个空数组,目前还没有请求后端的接口。...我们可以传递一个空数组作为useEffect的第二个参数,这样就能避免在组件更新执行useEffect,只会在组件mount时执行。...请记住:只有某个变量更新后,需要重新执行useEffect的情况,才需要将该变量添加到useEffect的依赖数组中。...它需要三种不同的状态转换FETCH_INIT,FETCH_SUCCESS和FETCH_FAILURE。每个状态转换都需要返回一个新的状态对象。

9.6K20

应用connected-react-router和redux-thunk打通react路由孤立

redux ,所以就需要路由组件要能访问到 redux store,这样组件就可以使用 store 的 dispatch action,可以使用 dispatch 带上路由信息作为 action 的负载将路由信息存到...操作发起时的 Action 操作成功时的 Action 操作失败时的 Action 为了区分这三种 action,可能在 action 里添加一个专门的status字段作为标记位: { type: 'FETCH_POSTS...' } { type: 'FETCH_POSTS', status: 'error', error: 'Oops' } { type: 'FETCH_POSTS', status: 'success',...response: { ... } } 或者为它们定义不同的 type: { type: 'FETCH_POSTS_REQUEST' } { type: 'FETCH_POSTS_FAILURE',...error: 'Oops' } { type: 'FETCH_POSTS_SUCCESS', response: { ... } } 所以想要实现异步操作需要做到: 操作开始时,发出一个 Action,

2.3K00

redux-sage笔记

前言:以前用redux处理异步状态都使用redux-thunk那个库。...也一直听说redux-saga是个和redux-thunk能够实现类似功能的库,而且redux-saga的处理方法更加高压和方便。这几天阅读了下文档写些小结。...注意的是,如果call调用fetch,在默认的fetch状态下返回的是Promise实例,但是由于是call调用,返回的是文本信息,可以直接调用 - put - put({type: '...第一个参数如果是数组的话,表示可以并发监听action - 可以更好的控制状态流 - 如下一个函数控制登陆和登出 //一个简单的登陆逻辑实现 //这个是会被阻塞的 function...未被捕获的话,这个错误是不会向上冒泡的 使用redux-saga来处理一些复杂的流程的时候似乎比较不错

70430

听说现在都考这些React面试题

长按识别二维码查看原文 https://www.robinwieruch.de/react-hooks-fetch-data标题:How to fetch data with React Hooks?..., this.el, ); } } 10 什么是 virtual DOM,它的引入带了什么好处 数据与UI的进一步分离,这样也更有利于 SSR 11 react 与 vue 数组中...hooks-custom.html 自定义一个 hook 仅仅是一个以 use 打头,组合 useState 和 useEffect 或者其它 hooks 的一个普通函数 18 在 react/vue 中数组是否可以以在数组中的次序为...解决什么问题,还有什么其他方案 24 为什么不能在表达式里面定义 react hooks 25 redux 和 mobx 有什么不同 26 关于 React hooks 的 caputre value...中如何发送请求 29 在 redux 中如何写一个记录状态变更的日志插件 30 在 setState 时发生了什么 31 如何设计一个UI组件库 32 React 中的 dom diff 算法如何从

99730

Redux进阶(像VUEX一样使用Redux) 前言redux的问题方案目标如何实现思考

更好的阅度体验 前言 redux的问题 方案目标 如何实现 思考 前言 Redux是一个非常实用的状态管理库,对于大多数使用React库的开发者来说,Redux都是会接触到的。...在使用Redux享受其带来的便利的同时, 我们也深受其问题的困扰。 redux的问题 之前在另外一篇文章Redux基础中,就有提到以下这些问题 纯净。Redux只支持同步,让状态可预测,方便测试。...effectMiddler } } 还原effects 对于effects, 使用的时候如下(没什么区别): props.dispatch({ type: 'rank/fundRankingList_fetch...pageSize: 20 } }) 还原effects的思路大概就是先将每一个model下的effect收集起来,同时加上命名空间作为前缀,将副作用的key即type 和相对应的方法value分开存放在两个数组里面...,然后定义一个中间件,每当有一个dispatch的时候,检查key数组中是否有符合的key,如果有,则调用对应的value数组里面的方法。

1.2K30

Clean-State:新的React状态管理姿势

这里我们不得不引入很多第三方开发库,比如react-reduxredux-thunk、redux-saga等等,这无疑增加了很大的学习成本,同时在寸土寸金的移动端会引入过大的包。...消除class组件和函数组件分歧,简化模块定义。 从这几点我们就能发现,Hooks本质上就是要简化React学习使用的心智曲线,并在逻辑抽象方面再往前走一步。...} }, effects: { async fetchNameAndSet({dispatch}) { const name = await Promise.resolve('fetch_name.../modules' function App() { /** * 这里你也能够传入数组同时返回多个模块状态 * const {user, project} = useModule(['user...async fetchNameAndSet({dispatch, rootState, state, payload}) { const name = await Promise.resolve('fetch_name

92850

前端常见react面试题合集

fetch封装npm install whatwg-fetch --save // 适配其他浏览器npm install es6-promiseexport const handleResponse...${params}`); } return fetch(url, Object.assign({}, options, { credentials: 'same-origin' })).then...Hooks 可以轻松地操作函数组件的状态,而不需要将它们转换为类组件。...类组件和函数组件之间的区别是啥?类组件可以使用其他特性,如状态 state 和生命周期钩子。当组件只是接收 props 渲染到页面时,就是无状态组件,就属于函数组件,也被称为哑组件或展示组件。...函数组件和类组件当然是有区别的,而且函数组件的性能比类组件的性能要高,因为类组件使用的时候要实例化,而函数组件直接执行函数取返回结果即可。为了提高性能,尽量使用函数组件。

2.4K30
领券