【问题标题】:Unhandled Rejection (Error): Given action returned undefined React JS未处理的拒绝(错误):给定的操作返回未定义的 React JS
【发布时间】:2018-06-01 11:23:21
【问题描述】:

我不确定为什么会出现错误。未处理的拒绝(错误):给定动作“SET_CARS”,reducer“cars”返回未定义。要忽略某个操作,您必须显式返回之前的状态。如果你希望这个 reducer 不保存任何值,你可以返回 null 而不是 undefined。

减速器

  import { SET_CARS} from "../actions";
  import { combineReducer } from "redux";

  function cars(state = [], action) {
  switch (action.type) {
  case SET_CARS:
  return 
  action.items;
  default:
  return state; }
  }

 const rootReducer = combineReducers({
 cars
 });

 export default rootReducer;

动作

 export const SET_CARS = 'SET_CARS';

 export function setCars(items){
  return {
    type: SET_CARS , 
    items
}
}

搜索汽车

class SearchCars extends Component {
 constructor() {
  super();


   this.state = {
  tansmition: ""
  };
  }

search() {
let { tansmition } = this.state;
const url = `http://localhost:4000/vehicles/? 
transmission=${tansmition}`;


fetch(url, {
  method: 'GET'
})
.then(response => response.json())
.then(json => {
    this.props.setCars(json.results)
  })
}

【问题讨论】:

    标签: javascript reactjs redux


    【解决方案1】:

    ASI strikes again.

    return 
    action.items;
    

    这被解释为:

    return;
    action.items;
    

    将它们放在一条线上,它应该可以工作。我也会考虑使用像prettier 这样的格式化程序。它将帮助您自己和其他人查看您的代码更轻松地发现此类错误。

    【讨论】:

      【解决方案2】:

      您的 fetch 在其粗箭头函数中缺少 return,因此 fetch 没有返回任何内容。

      改变这一行:

      .then(json => {
          this.props.setCars(json.results)
      })
      

      到这里:

      .then(json => {
          return this.props.setCars(json.results)
      })
      

      【讨论】:

      • .then(json => { return this.props.setCars(json.results) })。仍然出错
      猜你喜欢
      • 2019-07-09
      • 2020-06-19
      • 1970-01-01
      • 2022-01-03
      • 2023-04-06
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2019-07-19
      相关资源
      最近更新 更多