Reactjs 为什么我总是在react中获取reducer中的defaut值而不是当前值?

Reactjs 为什么我总是在react中获取reducer中的defaut值而不是当前值?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我有一个这样的减速器: import { SHOWSNACKBARACTION } from '../actions'; export default function showSnackbar(state = false, action) { switch (action.type) { case SHOWSNACKBARACTION: const showSnackbar = action.bool; return showSnackbar; d

我有一个这样的减速器:

import { SHOWSNACKBARACTION } from '../actions';

export default function showSnackbar(state = false, action) {
  switch (action.type) {
    case SHOWSNACKBARACTION:
      const showSnackbar = action.bool;
      return showSnackbar;
    default:
      return state;
  }
}
import { combineReducers } from 'redux';
import test from './test';
import metadata from './getMetaData';
import question from './getQuestion';
import showQuestion from './showQuestion';
import correct_answer from './sentGetAnswer';
import force_user_message from './force_user_message';
import showSnackbar from './showSnackbar';


const Reducer = combineReducers({
           test,
           metadata,
           question,
           showQuestion,
           correct_answer,
           force_user_message,
           showSnackbar
});

export default Reducer;
每次调用一个动作,可能是另一个动作,都会调用所有的减速器。因此,如果操作不是SHOWSNACKBARACTION,showSnackbar reducer将返回默认值=false

但有时我想返回当前值,如果调用了另一个操作,我不想更改该值

是否可以返回当前值,这样就不会发生任何更改,或者每次调用另一个操作时都必须调用SHOWSNACKBARACTION,这样就不会得到默认值

我读到,我不能在还原子中改变状态。但是我必须更新这里的状态吗?或者我能做什么

谢谢你的帮助

你说:

如果该操作不是showSnackbar操作,则showSnackbar减速机 将返回默认值=false

这实际上并不正确

Redux将使用当前状态填充参数
状态
。仅当状态未定义时才使用默认值。即,当您第一次创建redux状态时


您当前的设置应该可以正常工作。

组合我的减速器如下所示:

import { SHOWSNACKBARACTION } from '../actions';

export default function showSnackbar(state = false, action) {
  switch (action.type) {
    case SHOWSNACKBARACTION:
      const showSnackbar = action.bool;
      return showSnackbar;
    default:
      return state;
  }
}
import { combineReducers } from 'redux';
import test from './test';
import metadata from './getMetaData';
import question from './getQuestion';
import showQuestion from './showQuestion';
import correct_answer from './sentGetAnswer';
import force_user_message from './force_user_message';
import showSnackbar from './showSnackbar';


const Reducer = combineReducers({
           test,
           metadata,
           question,
           showQuestion,
           correct_answer,
           force_user_message,
           showSnackbar
});

export default Reducer;
我认为这也是正确的,不是吗

也许代码的另一部分有问题。我给了我所有的减速机一个控制台日志,无论它是否匹配。当我将SHOWSNACKBARACTION设置为true时,会出现以下情况:

js:10 metadatareducer nicht ausgeführt

getQuestion.js:15个问题

showQuestion.js:10 showQustion nicht ausgeführt

js:10正确答案不正确

js:9 force_user_message reducer ausgeführt

js:11 showSnackbar-nicht-ausgeführt

Application.js:156应用程序sind da中的元数据

js:10 metadatareducer nicht ausgeführt

getQuestion.js:15个问题

showQuestion.js:10 showQustion nicht ausgeführt

js:10正确答案不正确

js:16强制用户消息默认值

js:7 showSnackbar减速器ausgeführt

showSnackbar.js:8正确

Application.js:156应用程序sind da中的元数据

Application.js:76欢迎光临

js:10 metadatareducer nicht ausgeführt

getQuestion.js:15个问题

showQuestion.js:10 showQustion nicht ausgeführt

js:10正确答案不正确

js:16强制用户消息默认值

js:7 showSnackbar减速器ausgeführt

showSnackbar.js:8正确

Application.js:76欢迎光临

index.js:131 der request zum forcen geht######################

js:7 metadatareducer ausgeführt

getQuestion.js:15个问题

showQuestion.js:10 showQustion nicht ausgeführt

js:10正确答案不正确

js:16强制用户消息默认值

js:11 showSnackbar-nicht-ausgeführt

Application.js:156应用程序sind da中的元数据

js:10 metadatareducer nicht ausgeführt

getQuestion.js:15个问题

showQuestion.js:10 showQustion nicht ausgeführt

js:10正确答案不正确

js:16强制用户消息默认值

js:7 showSnackbar减速器ausgeführt

showSnackbar.js:8正确

Application.js:76欢迎光临

您可以看到,上次showSnackbar设置为true。但在react开发者工具中,我可以看出这是错误的。这怎么可能

编辑:

看起来开发工具没有向我显示正确的值。你知道这个问题吗?或者可以刷新它们吗

编辑2:


好的,我发现,firefox中的react开发者工具都可以正常工作。在铬合金中,它似乎被打破了

我认为你的问题是你在哪里结合这些减速器,因为这看起来完全正确