React work from Redux . TypeError: Cannot read property 'type' of undefined

React work from Redux . TypeError: Cannot read property 'type' of undefined

遇到这样的问题,我按照模板做了,但是出错了。可以在 GitHub

上找到带有文件的项目
TypeError: Cannot read property 'type' of undefined
DataReducer
D:/React_learn/Gitwooder/Wooder/wooder/src/Redux/DataReducer.js:20
  17 | 
  18 | const DataReducer = (state = initialState , action) => {
  19 | 
> 20 |  switch(action.type){
  21 |      case 'HIDE-MENU' :
  22 |      console.log('doschlo')
  23 |      return{

错误表明您的操作中没有类型 属性。

你应该像这样发送一个动作:dispatch({type: 'HIDE-MENU'})

如果它仍然不起作用,那么我希望你能分享你的堆栈跟踪,这样我们就能看到从哪里调度了操作

编辑:

您的 mapDispatchToProps 不正确。 mapDispatchToProps 中的每个 属性 应该是一个使用 react-redux 传递的调度的函数。请记住,映射的结果最终将附加到组件中的道具。我建议你重新阅读文档:https://react-redux.js.org/api/connect

正确的方法是:

import React from 'react';
import classes from './Header.module.css';
import { connect } from 'react-redux';

//***** CHANGE 1 *****
import { HidemenuAC } from '../../Redux/DataReducer';


const Header = (props) =>{

    const Menu_view = () =>{
        props.Hidemenu(true)
    }

    return <header className={classes.Header}>
        <div className={classes.Header_menu} onClick={Menu_view}>
            <div>
                <div className={classes.line}></div>
                <div className={classes.line}></div>
                <div className={classes.line}></div>
            </div>
            <div className={classes.Header_menu_text} tabIndex="0">MENU</div>
        </div>
        <div className={classes.Big_line}></div>
        <ul className={classes.HeaderUl}>
            <li>HOME</li>
            <li>PRODUCTS</li>
            <li>ABOUT</li>
        </ul>
        <div className={classes.Header_circle} >i</div>
        <div className={classes.Header_arrow}>EN &#9660;</div>
    </header>
}

const mapStateToProps = (state) => {
    return{
       Menu:state.Data.Menu
    }    
}

//***** Change 2 ******
const mapDispatchToProps = (dispatch) => ({
    Hidemenu: (value) => dispatch(HidemenuAC(value))
})

//***** Change 3 ******
export default connect(mapStateToProps, mapDispatchToProps)(Header);