Ошибка: действия должны быть простыми объектами.Используйте пользовательское промежуточное ПО для асинхронных действий для обновлений вызовов не API - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь управлять одним состоянием без каких-либо действий a sync, но сталкиваюсь с этой ошибкой.это мой store.js:

import { createStore } from "redux";
import reducer from "./../reducers";

const initialState = { todolist: [] };
export const store = createStore(reducer, initialState);

это мой action.js:

export const setTodolist = listitem => {
    ({ type: "SET_TODOLIST", todolist: listitem })
};

это мой reducer.js:

export default (state, action) => {
    console.log(state , "reducer")
    switch (action.type) {
        case "SET_TODOLIST":
            return {
                ...state,
                todolist: [...state,  action.todolist]
            };
      default:
            return state;
    }
};

и наконецэто мой компонент:

import { store } from "./../redux/store";
import { setTodolist } from '../redux/actions';

export default class Mylist extends React.Component {
  render() {
      return (
          <input    placeholder="username" 
                    name="inputval" />
          <button className="mt-4" color="success" onClick={dispatchBtnAction} >Add Todo</button>   
      ) 
  }
}
function dispatchBtnAction(e) {
    const val = document.getElementsByName("inputval").value;
    store.dispatch(setTodolist({val}))
}

Вы знаете, в чем проблема?

1 Ответ

0 голосов
/ 22 января 2019

Синтаксис вашего действия неверен. С вашим текущим синтаксисом указанный объект является просто блоком кода, который не возвращается. Вы должны написать это как

export const setTodolist = listitem => (
    { type: "SET_TODOLIST", todolist: listitem })
);

или

export const setTodolist = listitem => {
    return { type: "SET_TODOLIST", todolist: listitem }
};
...