是因为thunk是一种用于处理异步操作的中间件,它允许在Redux中进行异步操作。在thunk中,getState函数是作为参数传递给thunk函数的,而不是在thunk中定义的。
具体来说,thunk中的函数接受两个参数:dispatch和getState。dispatch用于触发Redux的action,而getState用于获取当前的Redux store的状态。
在使用thunk时,可以通过getState函数来获取当前的Redux store的状态,以便在异步操作中进行逻辑判断或者获取数据。
以下是一个示例代码,展示了如何在thunk中使用getState函数:
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
// 定义一个reducer
function reducer(state = {}, action) {
switch (action.type) {
// ...
default:
return state;
}
}
// 创建store,并应用thunk中间件
const store = createStore(reducer, applyMiddleware(thunk));
// 定义一个异步action
function fetchData() {
return (dispatch, getState) => {
// 获取当前的Redux store状态
const currentState = getState();
// 在这里可以根据currentState进行逻辑判断或者获取数据
// 异步操作示例,比如发送网络请求
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
// 异步操作完成后,可以触发其他的action来更新store
dispatch({ type: 'FETCH_DATA_SUCCESS', payload: data });
})
.catch(error => {
dispatch({ type: 'FETCH_DATA_FAILURE', payload: error });
});
};
}
// 调用异步action
store.dispatch(fetchData());
在上述示例中,fetchData函数是一个异步action,它接受dispatch和getState作为参数。在函数体内部,可以通过getState函数获取当前的Redux store状态,并根据需要进行逻辑判断或者获取数据。
需要注意的是,thunk是Redux的一个中间件,可以通过第三方库redux-thunk来使用。在创建store时,需要使用applyMiddleware函数将thunk中间件应用到store中。
对于thunk中未定义的getState函数,可以检查是否正确引入了redux-thunk,并且在创建store时正确应用了thunk中间件。
领取专属 10元无门槛券
手把手带您无忧上云