【问题标题】:Redux create reducer expectedRedux 预期创建减速器
【发布时间】:2021-02-01 19:35:38
【问题描述】:

早上好, 在使用 redux 时出现以下错误,我已经配置了 reducer 和操作什么,我应该修复什么?

错误:预计 reducer 是一个函数。

代码:

import {createStore} from "redux";

const initalUser={
    IdUtente: 0
 };

const store=createStore(
    initalUser
  )

function userset(state=initalUser,action,value){
    switch(action){
        case "Login":
           state=value;
           return state;
        default:
          return state;
    }
}
export function userReducer(idUtente){ 
    store.userset(initalUser,"Login",idUtente);
}
export function getUser(){
    return store.getState();
}

【问题讨论】:

  • initalUser 是一个对象......它应该是一个函数

标签: reactjs redux reducers


【解决方案1】:

老实说,您在这里所做的几乎所有事情都是不正确的。 createStore 需要用 reducer 调用,而不是初始状态。 userset 不会神奇地成为 store 的属性,并且您将其编写得更像是 reducer 而不是 action 创建者 - 但它不是有效的 reducer(只接受两个参数)并且您在任何地方都没有调度 action在该代码中可以看到。

所以,这需要看起来像

import {createStore} from "redux";

const initalUser={
    IdUtente: 0
 };

const store=createStore(
    userReducer
  )

function userReducer(state=initalUser,action){
    switch(action.type){
        case "Login":
           return action.payload;
        default:
          return state;
    }
}

export function userSet(idUtente){ 
    store.dispatch({ type: "Login", payload: idUtente });
}

export function getUser(){
    return store.getState();
}

即使这样也不是非常典型的 redux 代码。

除此之外:这是一种非常过时的 redux 风格,我们不建议再教授或学习它

请忽略你现在正在学习的任何教程,去https://redux.js.org/tutorials/index的官方redux教程并从头到尾跟着他们两个(他们从旧式的redux开始解释基础知识,然后教你现代的 redux,看起来很不一样)。

【讨论】:

  • 我是redux的初学者,网上看了一系列教程,谢谢指教
  • 是的,不幸的是有很多非常过时的教程——这就是我链接官方教程的原因——它们是最新的并且非常好:)
  • 你知道还有新的视频教程吗?
  • 不,但是如果您想观看任何视频教程,请确保它是关于“redux toolkit”的视频教程,而不仅仅是“redux”。
猜你喜欢
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多