当前位置: 首页 > 面试题库 >

React Redux意外密钥传递给创建存储

微生雨泽
2023-03-14
问题内容

我收到错误 Unexpected key "characters" found in initialState argument passed to createStore. Expected to find one of the known reducer keys instead: "marvelReducer", "routing". Unexpected keys will be ignored.

rootReducer:

 import { combineReducers } from 'redux';
 import { routerReducer } from 'react-router-redux';
 import marvelReducer from './marvelReducer';

 const rootReducer = combineReducers({
   marvelReducer,
   routing: routerReducer
 });
 export default rootReducer;

marvelReducer:

import { FETCH_MARVEL } from '../constants/constants';
import objectAssign from 'object-assign';

export default function marvelReducer(state = [], action) {
  switch (action.type) {
    case FETCH_MARVEL:
      return objectAssign({}, state, {characters: action.data});

    default:
      return state;
  }
}

店铺:

import { createStore } from 'redux';
import { syncHistoryWithStore } from 'react-router-redux';
import { browserHistory } from 'react-router';

import rootReducer from '../reducers/index';

const initialState = {
  characters: []
};

const store = createStore(rootReducer, initialState);

export const history = syncHistoryWithStore(browserHistory, store);

if (module.hot) {
  module.hot.accept('../reducers/', () => {
    const nextRootReducer = require('../reducers/index').default;
    store.replaceReducer(nextRootReducer);
  });
}

export default store;

我在另一个应用程序中有非常相似的代码,并且工作正常。不知道这是怎么回事


问题答案:

您设置为商店的初始状态与告诉商店期望商店的初始状态之间存在微小的不匹配,例如-像这样更新商店的初始状态设置:

const initialState = {
   marvel: {
     characters: []
   }
};

最好将状态树变量持有人命名为有意义的名称,其中不包含reducer,因此请进行更新

const rootReducer = combineReducers({
   marvelReducer,
   routing: routerReducer
});

const rootReducer = combineReducers({
   marvel: marvelReducer,
   routing: routerReducer
});

那应该为您解决问题。

希望这可以帮助,

PS。一些文档。

从文档:

如果您使用CombineReducers生产了reducer,则它必须是一个与传递给它的键具有相同形状的普通对象。否则,您可以自由传递减速器可以理解的任何内容。

如果您不需要处理与one或相关的任何操作two,只需将它们拉入即可,这可能很简单

export default combineReducers({
  events,
  flash,
  one: (state = {}) => state,
  two: (state = {}) => state
})


 类似资料:
  • 我在创建/使用在PHP中创建和使用的RSA密钥方面有一个问题。问题是,(公共和私人)密钥应该在不同的服务器之间交换(例如,当移动用户帐户时)。 现在,PHP的openssl库没有提供任何关于密钥创建格式的详细信息。最新文档位于http://php.net/manual/en/function.openssl-pkey-export.php只是声明它是“PEM格式”,但没有说明它是在PKCS#1还是

  • 在Google Play控制台中,您可以上传加密的应用程序签名密钥,将现有应用程序转换为使用Google managed应用程序签名:https://support.Google.com/googleplay/android-developer/answer/9842756?hl=en#zippy=%2Cexisting-apps 提供了3种不同的方法,它们都产生相同的加密密钥,但从不同类型的输入

  • 我有一个活动A,在那里我通过意图启动另一个活动。但我的目标是将密钥传递给活动1,而不是在活动2处处理。从onkeydown或onkeyup返回false没有用。我如何实现这一点? 我的activity2如下所示,其中我不处理键,而是重新调整false。 尝试只返回false,而不是onKey的超级调用。。方法和没有用。有可能做到这一点吗?

  • 假设我使用openssl创建了一个x25519密钥对,它将输出一个64字节的私钥和相应的44字节Base64编码公钥,如下所示: Swift CryptoKit仅接受32字节的私钥和公钥初始化。 如果我理解正确,64字节私钥是种子,其中前32字节是实际的私钥。 尽管如此,对公钥使用相同的原理是行不通的(不是很令人惊讶的tbh) 现在的问题是:如何将公钥转换为 Swift CryptoKit 所需的

  • 我有一个使用Spring缓存注释的Spring Boot应用程序。现在我想迁移到JSR-107(JCache)注释。 这是我的方法: 我希望我的新方法是这样的: 计算器输入类: @CacheKey注释指示spring将整个CalculatorInput对象存储为Key。我只想使用CalculatorInput类的属性id作为键。 我如何创建一个缓存键(就像我在Spring缓存注释中所做的那样),但

  • 问题内容: 据我了解,密钥库通常会保存私钥/公钥,而信任库通常只保存公钥(并代表你打算与之通信的受信任方的列表)。好吧,这是我的第一个假设,因此,如果这不正确,那么我可能起步并不顺利。 不过,我很想了解使用keytool时如何/何时区分商店。 因此,到目前为止,我已经使用 这将创建我的keystore.ks文件。我回答yes了我是否信任bob的问题,但是我不清楚这是否创建了密钥库文件或信任库文件?