【问题标题】:Syntax error on switch case statement react-reduxswitch case语句react-redux上的语法错误
【发布时间】:2018-12-07 16:21:11
【问题描述】:

在我的代码中,action.payload 指向 todo.index,因此我的 REMOVE_TODO 案例应该过滤掉一个与触发事件的索引相同的 todo。但是,我得到了语法错误。我弄乱了我的包装,甚至尝试从头开始重写它,但无法消除这些语法错误。有人看到我在这里缺少的东西吗? 请让我知道是否需要更多信息。谢谢大家!

import { ADD_TODO } from '../constants/action-types'; 
import { REMOVE_TODO } from '../constants/action-types';

const initialState = {
  todos: []
};

const rootReducer = (state = initialState, action) => {
  switch (action.type) {
    case ADD_TODO:
    return {
        ...state,
        todos: [...state.todos, action.payload]
    }

    case REMOVE_TODO:
    return {
      ...state,
      todos: [...state.todos.filter((todo, i) => {i  !== action.payload})]
    }

    default:
      return state;
  }
}

export default rootReducer;

【问题讨论】:

  • 你会展示你遇到的错误吗?
  • 是的,它在 => {i !== action.payload}) 上的 => 等号上,它表示预期会在箭头函数中返回一个值。在i !== action.payload 上,它说期望一个赋值或函数调用,而不是看到一个表达式。`

标签: javascript syntax react-redux switch-statement case


【解决方案1】:

你错过了在过滤器函数中返回一个值。

看看演示。

const initialState = {
  todos: [1,2,3,7,8,5]
};

const rootReducer = (state = initialState, action) => {
  switch (action.type) {
    case 'ADD_TODO':
    return {
        ...state,
        todos: [...state.todos, action.payload]
    }

    case 'REMOVE_TODO':
    return {
      ...state,
      todos: [...state.todos.filter((todo, i) => i  !== action.payload)]
    }

    default:
      return state;
  }
}

let op = rootReducer({todos:[1,2,3,4,5,6]},{type:'REMOVE_TODO',payload:1});
console.log(op)

【讨论】:

  • Ahhhh 我从我的过滤器方法返回一个对象。就是这样
  • @ColeGonzales 是的,这就是我的答案第一行所说的:)
  • 哦哈哈哈。我没看懂标题?
【解决方案2】:

原来我只是从我的过滤器方法中返回一个对象。 todos: [...state.todos.filter((todo, i) => {i !== action.payload})] 刚刚从箭头函数的返回中去掉了大括号,现在一切都好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多