reactjs - Redux Thunk:redux thunk 没有调度一个动作
问题描述
我正在查看 thunk 并试图弄清楚如何实现 api 调用。它不起作用,所以我回到了最基本的东西。当我单击控制台中的按钮时,显示调度不是功能。
我认为问题来自applymiddleware,因为当我将其注释掉增量和减量按钮正在工作时。我做错了什么?
const store = createStore(root,
compose(
applyMiddleware(fetch), window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
))
const Counter = (props) => {
console.log(props);
return (
<div>
<h1>{props.count}</h1>
<button onClick={props.increment}>+</button>
<button onClick={props.decrement} >-</button>
<button onClick={props.fetch} >Add</button>
</div>
);
}
const mapStateToProps = (state) => {
return {
count: state.CountReducer.count,
// item: state.CountReducer.item
}
}
const mapDispatchToProps = (dispatch) => {
return {
increment: bindActionCreators(increment, dispatch),
decrement: bindActionCreators(decrement, dispatch),
fetch: bindActionCreators(fetch, dispatch),
}
}
这是thunk和reducer的代码
export const fetch = () => {
return dispatch => {
axios.get('https://jsonplaceholder.typicode.com/todos/1')
.then(response => dispatch(add(response.data)))
}
}
export const add = (answer) => (
{
type: "ADD_DATA",
payload: answer
}
)
const initialState = {
count: 0,
item: []
}
export function CountReducer(state = initialState, action) {
console.log("reducer");
console.log("state");
switch (action.type) {
case ADD_DATA:
return {
...state,
item: action.payload
}
case INCREMENT_COUNT:
return {
...state,
count: state.count + 1
}
case DECREMENT_COUNT:
return {
...state,
count: state.count - 1
}
case GET_FETCHED_POSTS:
return {
...state,
item: action.payload
}
default:
return state
}
}
解决方案
试试这个代码来创建商店
import { createStore, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import reducer from './reducer';
const initialState = {};
const middleware = [thunk];
const composeEnhancers =
typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({})
: compose;
const enhancer = composeEnhancers(applyMiddleware(...middleware));
const store = createStore(reducer, initialState, enhancer);
export default store;
推荐阅读
- python - 如何用文件名替换熊猫数据框中的单元格值?
- java - 有没有一种简单的方法可以通过它的值对地图的键进行排序?
- list - 使用 List.Genrate 的 PowerBI 表达式错误
- r - 从 for 循环输出创建多个箱线图
- ios - 侧载颤振iOS应用程序时出现空白屏幕
- swift - 快速选择器不选择项目
- c++ - 如何将重载中的第二个参数传递给 std::visit?
- google-cloud-logging - 如何在 GCP 日志记录中保留混合大小写,因为目前它显示全部小写?
- c# - 视觉错误代码 C1002 - 玩家移动问题 - 已修复
- python - 在 Python 中将文本文件转换为数据框