在我的redux js app(google appengine后端)中,当打开包含Root组件的页面时,我收到以下警告和错误消息。
警告:propType失败:提供给store
的{{1}}类型的道具function
无效,预计为Provider
。检查object
的呈现方法。
bundle.js:6169
警告:propType失败:提供给Root
的{{1}}类型的道具store
无效,预计为function
。检查DevToolsWrapper
的呈现方法。
bundle.js:6169
警告:上下文类型失败:提供给object
的{{1}}类型的子上下文Root
无效,预期为store
。检查function
的呈现方法。
bundle.js:6169
警告:上下文类型失败:提供给Provider
的{{1}}类型的上下文object
无效,预期为Root
。检查store
的呈现方法。
function
这是react-redux的lib / components / createConnect.js中发生错误的地方。
Connect(AsyncApp)
在断点处,在此错误发生之前,console.log(store)将返回此错误。
object
但是,当我使用Node后端运行完全相同的代码时,console.log(store)会返回此对象。
Provider
我的root组件和configureStore.js如下所示:
Uncaught TypeError: store.getState is not a function
configureStore.js
function computeStateProps(store, props) {
var state = store.getState(); <<<<< The error occurs here.
var stateProps = shouldUpdateStateProps ? finalMapStateToProps(state, props) : finalMapStateToProps(state);
_invariant2['default'](_utilsIsPlainObject2['default'](stateProps), '`mapStateToProps` must return an object. Instead received %s.', stateProps);
return stateProps;
}
答案 0 :(得分:9)
我的猜测是你正在运行一个旧的示例代码。有breaking change in Redux 2.0 compose()
function API。
而不是
const finalCreateStore = compose(
applyMiddleware(thunkMiddleware),
devTools(),
persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)),
createStore
);
你可能想要
const finalCreateStore = compose(
applyMiddleware(thunkMiddleware),
devTools(),
persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/))
)(createStore);