给定动作“LoadEntries”,reducer“entries”返回未定义。
Posted
技术标签:
【中文标题】给定动作“LoadEntries”,reducer“entries”返回未定义。【英文标题】:Given action "LoadEntries", reducer "entries" returned undefined. 【发布时间】:2019-05-30 16:00:35 【问题描述】:当我运行我的应用程序时,我收到以下错误。
错误:给定动作“LoadEntries”,reducer “entries”返回 不明确的。要忽略某个操作,您必须显式返回 以前的状态。如果你希望这个减速器没有价值,你可以 返回 null 而不是 undefined。
下面是动作文件。
import axios from 'axios';
export const loadEntries = () =>
return dispatch =>
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(res =>
dispatch(type: 'LoadEntries', payload: res.data);
).catch(error =>
console.error("Error: " + error);
)
下面是reducer。
export default (state = [], action) =>
console.log("Action: " + JSON.stringify(action) + " State: " + state);
switch (action.type)
case 'LoadEntries':
return action.payload;
default:
return state;
当我运行应用程序时,我得到以下减速器登录控制台。
动作:"type":"LoadEntries" 状态:
下面是 Index.js 文件。
import React from 'react';
import ReactDOM from 'react-dom';
import createStore, applyMiddleware from 'redux';
import thunk from 'redux-thunk';
import Provider from 'react-redux'
import reducer from './store/reducer';
import App from './App';
import BrowserRouter from 'react-router-dom';
const store = createStore(reducer, applyMiddleware(thunk));
ReactDOM.render(
<Provider store=store>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>,
document.getElementById('root'));
还附上控制台截图。
谢谢。
【问题讨论】:
我在您的代码中没有发现任何问题。你能分享一下调用动作的代码吗 【参考方案1】:您不会在动作调度程序内对 promise 的 resolve 或 reject 都返回动作。
您的调度程序应始终返回一个操作。
我还建议在单独的操作中处理拒绝。
【讨论】:
以上是关于给定动作“LoadEntries”,reducer“entries”返回未定义。的主要内容,如果未能解决你的问题,请参考以下文章