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开发者工具都可以正常工作。在铬合金中,它似乎被打破了 我认为你的问题是你在哪里结合这些减速器,因为这看起来完全正确