本文作者:区块链资讯

eth-thunk(eththunk)

区块链资讯 2023-06-09 129
eth-thunk(eththunk)摘要: 本文目次导读:1、深切探究eth-thunk及eththunk的原理和用法2、eth-thunk是什么?3、etht...
本文目次导读:1、深切探究eth-thunk及eththunk的原理和用法2、eth-thunk是什么?3、eththunk和eth-thunk的区别4、eth-thunk的原理5、eth-thunk的优缺点

深切探究eth-thunk及eththunk的原理和用法eth-thunk是什么?

eth-thunk是一个基于Redux框架的中间件,它的感化是将异步操做封拆成一个函数,使得Redux的dispatch函数能够承受一个函数做为参数。如许,我们就能够在Redux中利用异步操做了。eth-thunk的根本用法如下:

```javascript

const thunkMiddleware = require('redux-thunk').default;

const store = createStore(reducer, applyMiddleware(thunkMiddleware));

function fetchUser(id) {

return (dispatch) => {

dispatch({type: 'FETCH_USER_REQUEST'});

return axios.get(`/users/${id}`)

.then(response => {

dispatch({type: 'FETCH_USER_SUCCESS', payload: response.data});

})

.catch(error => {

dispatch({type: 'FETCH_USER_FAILURE', payload: error});

});

};

}

store.dispatch(fetchUser(123));

```

在上面的代码中,我们利用了axios库来停止异步操做,fetchUser函数返回一个函数,那个函数承受dispatch函数做为参数,然后在异步操做完成后,再通过dispatch函数来更新Redux中的形态。

eththunk和eth-thunk的区别

eththunk与eth-thunk是统一个工具,只是名称差别罢了。eththunk是ethers.js中的一个模块,它供给了与ethers.js集成的eth-thunk中间件的实现。eththunk的根本用法如下:

const {ethers} = require('ethers');

const {createMiddleware} = require('eth-thunk');

const provider = new ethers.providers.JsonRpcProvider();

const signer = provider.getSigner();

const middleware = createMiddleware({provider, signer});

const store = createStore(reducer, applyMiddleware(middleware));

store.dispatch(async (dispatch) => {

const balance = await provider.getBalance(signer.getAddress());

dispatch({type: 'SET_BALANCE', payload: balance});

});

在上面的代码中,我们利用ethers.js中的JsonRpcProvider来获取以太坊账户的余额,然后通过eth-thunk中间件来更新Redux中的形态。

eth-thunk的原理

eth-thunk中间件的原理很简单,它就是一个函数,那个函数承受一个dispatch函数做为参数,然后返回一个函数,那个函数也承受一个dispatch函数做为参数,然后在异步操做完成后,再通过内层的dispatch函数来更新Redux中的形态。

eth-thunk中间件的源码如下:

export default function thunkMiddleware({dispatch, getState}) {

return (next) => (action) => {

if (typeof action === 'function') {

return action(dispatch, getState);

}

return next(action);

在上面的代码中,我们能够看到thunkMiddleware函数承受一个参数对象,那个对象包罗dispatch和getState函数。然后它返回一个函数,那个函数承受一个next函数做为参数,然后返回一个函数,那个函数承受一个action对象做为参数。

若是action对象是一个函数,那么就挪用那个函数,并传入dispatch和getState函数做为参数。不然,就挪用next函数,并传入action对象做为参数。

eth-thunk的优缺点

eth-thunk中间件的长处是能够很便利地处置异步操做,使得我们能够在Redux中利用异步操做。并且,eth-thunk中间件的实现十分简单,只需要几行代码就能够实现。

eth-thunk中间件的缺点是可能会使代码变得复杂。若是我们在一个函数中嵌套多个异步操做,那么代码就会变得十分难以理解和维护。此外,eth-thunk中间件只适用于简单的异步操做,若是我们需要处置复杂的异步操做,那么可能需要利用其他的中间件,好比redux-saga。

eth-thunk是一个十分适用的中间件,它能够很便利地处置异步操做,使得我们能够在Redux中利用异步操做。eth-thunk的实现十分简单,只需要几行代码就能够实现。但是,eth-thunk中间件只适用于简单的异步操做,若是我们需要处置复杂的异步操做,那么可能需要利用其他的中间件,好比redux-saga。

eth-thunk(eththunk)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享