gpt4 book ai didi

reactjs - React-Redux 中的无效 mapStateToProps 参数

转载 作者:行者123 更新时间:2023-12-03 13:20:00 24 4
gpt4 key购买 nike

我遇到了 ma​​pStateToProps 参数的问题。这似乎是一个非常简单的错误,但我无法弄清楚发生了什么。基本上,我想做的是使用react-redux和react saga切换侧边栏菜单。一切正常,但我收到以下错误:

Uncaught Error: Invalid value of type object for mapStateToProps argument when connecting component Sidebar.

感谢任何帮助:

索引 app/js/index.js

import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import configureStore from '../store/configureStore';
import Canvas from '../components/Canvas/Canvas';

const store = configureStore();

render(
<Provider store={store}>
<Canvas />
</Provider>,
document.getElementById('app'),
);

reducer

(索引)app/reducers/index.js

import { combineReducers } from 'redux';
import sidebar from './sidebar';

const rootReducer = combineReducers({
sidebar,
});

export default rootReducer;

(侧边栏)app/reducers/sidebar.js

import {
TOGGLE_SIDEBAR,
} from '../actions';

const sidebar = (state = { value: true }, action) => {
switch (action.type) {
case TOGGLE_SIDEBAR:
debugger;
return action.value;
default:
debugger;
return state.value;
}
}

export default sidebar;

传奇

index.js 应用程序/sagas/index.js

import { fork } from 'redux-saga/effects';
import { watcher } from './watcher';

function* rootSaga() {
yield [
fork(watcher),
];
}

export default rootSaga;

sidebar.js app/sagas/sidebar.js

import { put } from 'redux-saga/effects';
import {
TOGGLE_SIDEBAR,
} from '../actions';

export function* sidebar () {
try {
yield put ({ type: TOGGLE_SIDEBAR });
} catch (err) {
debugger;
}
}

watcher.js 应用程序/sagas/watcher.js

import { takeEvery } from 'redux-saga/effects';
import { sidebar } from './sidebar';
import {
TOGGLE_SIDEBAR,
} from '../actions';

export function* watcher() {
try {
yield takeEvery(TOGGLE_SIDEBAR, sidebar);
} catch (err) { debugger; }
}

操作 app/actions/index.js

export const TOGGLE_SIDEBAR = 'TOGGLE_SIDEBAR';

export const toggleSidebar = (value) => ({
type: TOGGLE_SIDEBAR,
value,
});

容器 SidebarContainer.js app/containers/sidebarContainer.js

import { connect } from 'react-redux';
import {
toggleSidebar as callToggleSidebar,
} from '../actions';
import Sidebar from '../components/Sidebar/Sidebar';

debugger;
const mapStateToProps = (state) => {
debugger;
return {
open: state.sidebar,
}
};

const mapDispatchToProps = dispatch => ({
toggleSidebar: (val) => { dispatch(callToggleSidebar(val)); },
});

export default connect({
mapStateToProps,
mapDispatchToProps,
})(Sidebar);

组件

Sidebar.jsx 应用程序/组件/Sidebar.jsx

import React from 'react';
import { PropTypes } from 'prop-types';
import './styles/styles.less';

const Sidebar = ({ open, toggleSidebar }) => (
<div className={open ? 'sidebar sidebar-open' : 'sidebar sidebar-closed'}>
<div className='show-hide-container'>
<button onClick={() => toggleSidebar(!open)}>
<i className="fa fa-arrow-right" aria-hidden="true" />
</button>
</div>
Sidebar
</div>
);

Sidebar.propTypes = {
open: PropTypes.bool.isRequired,
toggleSidebar: PropTypes.func.isRequired,
};

export default Sidebar;

最佳答案

export default connect(
mapStateToProps,
mapDispatchToProps,
)(Sidebar);

请尝试将 mapStateToPropsmapDispatchToProps 作为参数而不是对象传递。

connect 是一个需要状态和调度函数的函数。

https://github.com/reactjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options

关于reactjs - React-Redux 中的无效 mapStateToProps 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44886589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com