从Redux迁移到React Context API +钩子时如何处理副作用

Dac0d3r

如果您有要迁移到新的React Context API +钩子(useReducer)的Redux应用程序,您将如何替换redux-saga或redux-thunk来处理副作用?让我们以redux-saga的github页面为例:

import { call, put, takeEvery, takeLatest } from 'redux-saga/effects'
import Api from '...'

function* fetchUser(action) {
   try {
      const user = yield call(Api.fetchUser, action.payload.userId);
      yield put({type: "USER_FETCH_SUCCEEDED", user: user});
   } catch (e) {
      yield put({type: "USER_FETCH_FAILED", message: e.message});
   }
}

function* mySaga() {
  yield takeEvery("USER_FETCH_REQUESTED", fetchUser);
}

function* mySaga() {
  yield takeLatest("USER_FETCH_REQUESTED", fetchUser);
}

export default mySaga;

在不使用Redux的情况下进行等效操作的建议最佳实践是什么,而是使用React Context api +钩子呢?

卢西亚诺·塞梅里尼(Luciano Semerini)

看一下useEffect钩子。这就是您使用的副作用。

https://reactjs.org/docs/hooks-effect.html

这是一个如何从组件调用api并呈现数据的示例:

import ReactDOM from "react-dom";
import React, { useState, useEffect } from "react";
import axios from "axios";

function SearchResults() {
  const [data, setData] = useState(null);
  useEffect(() => {
    function getFetchUrl() {
      return "https://hn.algolia.com/api/v1/search?query=react";
    }
    async function fetchData() {
      console.log("asdasd");
      const result = await axios(getFetchUrl());
      setData(result.data);
    }

    fetchData();
  }, []);
  return <div>{JSON.stringify(data)}</div>;
}

ReactDOM.render(<SearchResults />, document.getElementById("root"));

我从overreacted.io中部分获取了这段代码,强烈建议您阅读有关useEffect钩子的这篇奇妙文章https : //overreacted.io/a-complete-guide-to-useeffect/

关于useReducer,它基本上是useState类固醇。它允许您处理更复杂的状态操作,但实际上并没有太大的区别。

在您希望状态由不同组件共享的情况下,可以使用,useContext但它与副作用的工作方式确实无关。

----关于redux:

我还想发表评论,例如,如果仅使用它来将数据传递给嵌套组件,那么使用React Context api +钩子替换应用程序中的redux可能会很好。但是,如果您需要所有出色的工具,中间件,devtools等,则Redux仍然是一个不错的选择,即使使用钩子,它们也不是互斥的。

看到:

https://blog.isquaredsoftware.com/2019/03/presentation-state-of-redux/特别是https://blog.isquaredsoftware.com/presentations/2019-03-state-of-redux/#/10 https: //blog.isquaredsoftware.com/presentations/2019-03-state-of-redux/#/11

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React Context API +钩子

来自分类Dev

如何处理react / redux中的副作用?

来自分类Dev

如何处理react / redux中的副作用?

来自分类Dev

如何在Redux中使用React Context API?

来自分类Dev

React Context API与本地存储

来自分类Dev

使用Typescript的React的Context API

来自分类Dev

如何获取数据并存储在React Context API中?

来自分类Dev

React props vs redux vs hooks 和 context api

来自分类Dev

如何使用React钩子处理/链接依赖于另一个的同步副作用

来自分类Dev

从React的Context API组件重定向

来自分类Dev

React Context API不起作用错误:元素类型无效

来自分类Dev

迁移到numpy API 1.7

来自分类Dev

我可以在Context API中使用React Context API还是必须将它们合并?

来自分类Dev

如何使用React Context API在多个路由之间具有状态?

来自分类Dev

如何使用React Context API在多个路由之间具有状态?

来自分类Dev

仅当或当用户使用React Js Context API登录时才如何获取数据?

来自分类Dev

如何通过Context API在React.Component类中获取数据?

来自分类Dev

如何使用 React Context API 使用来自单击项目的信息更改状态

来自分类Dev

Redux和Context API在同一React Native项目中一起使用

来自分类Dev

如何将模板从 Handlebar 迁移到 React 的 JSX

来自分类Dev

Android N:如何从Android SDK API迁移到Android ICU API

来自分类Dev

Stripe:如何在PHP中从Charge API迁移到PaymentIntent API

来自分类Dev

在React中使用Context API和功能组件作为服务

来自分类Dev

无法使用Context API React Native检索数据

来自分类Dev

具有多个值性能的React Context API

来自分类Dev

创建新对象时,使用React Context API更新组件

来自分类Dev

无法从 React.Context API 获取提供者数据

来自分类Dev

React HOC 在 Lifecycle 方法中使用 Context API

来自分类Dev

使用 React Context API 时,无法获取数据

Related 相关文章

  1. 1

    React Context API +钩子

  2. 2

    如何处理react / redux中的副作用?

  3. 3

    如何处理react / redux中的副作用?

  4. 4

    如何在Redux中使用React Context API?

  5. 5

    React Context API与本地存储

  6. 6

    使用Typescript的React的Context API

  7. 7

    如何获取数据并存储在React Context API中?

  8. 8

    React props vs redux vs hooks 和 context api

  9. 9

    如何使用React钩子处理/链接依赖于另一个的同步副作用

  10. 10

    从React的Context API组件重定向

  11. 11

    React Context API不起作用错误:元素类型无效

  12. 12

    迁移到numpy API 1.7

  13. 13

    我可以在Context API中使用React Context API还是必须将它们合并?

  14. 14

    如何使用React Context API在多个路由之间具有状态?

  15. 15

    如何使用React Context API在多个路由之间具有状态?

  16. 16

    仅当或当用户使用React Js Context API登录时才如何获取数据?

  17. 17

    如何通过Context API在React.Component类中获取数据?

  18. 18

    如何使用 React Context API 使用来自单击项目的信息更改状态

  19. 19

    Redux和Context API在同一React Native项目中一起使用

  20. 20

    如何将模板从 Handlebar 迁移到 React 的 JSX

  21. 21

    Android N:如何从Android SDK API迁移到Android ICU API

  22. 22

    Stripe:如何在PHP中从Charge API迁移到PaymentIntent API

  23. 23

    在React中使用Context API和功能组件作为服务

  24. 24

    无法使用Context API React Native检索数据

  25. 25

    具有多个值性能的React Context API

  26. 26

    创建新对象时,使用React Context API更新组件

  27. 27

    无法从 React.Context API 获取提供者数据

  28. 28

    React HOC 在 Lifecycle 方法中使用 Context API

  29. 29

    使用 React Context API 时,无法获取数据

热门标签

归档