当前位置: 首页 > 知识库问答 >
问题:

React Redux类组件mapStateToProps错误

胡鸿羲
2023-03-14

无法访问Class组件中的还原存储当前状态。

显示控制台错误

函数作为React子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者你想调用这个函数而不是返回它。

当我尝试使用带有 useSelector 和 useDispatch 的函数组件来实现相同的方法时,一切都按预期工作。这到底是怎么回事?

reducer.js

let initialState={
    count:0
}

const reducer=(state=initialState,action)=>{
    switch(action.type){
        case ADD_INCREMENT:
            return {
                ...state,
                count:state.count+1
            };
        default: return state;
    }
}

export default reducer;

action.js

const Increment=()=>{
    return {
        type:ADD_INCREMENT
    }
} 

商店. js

import reducer from './reducer';

const store=createStore(reducer);

export default store;

类别组件

 import { connect } from 'react-redux';
    
    const mapStateToProps=state=>{
        return {
            count:state.count
        }
    }

const mapDispatchToProps=(dispatch)=>{
    return {
        count:()=>dispatch(action.Increment())
    }
}
    
    class Orders extends Component {
        render() {
            return (
                <div>
                    <h1>Count: {this.props.count} </h1>
                </div>
            );
        }
    }
    
    export default connect(mapStateToProps,mapDispatchToProps)(Orders);

应用内。js:整个容器用提供者包装,存储作为道具传递

共有1个答案

壤驷升
2023-03-14

你已经命名了你的状态,你的行动都算数,后者是作为道具注入的那个。

const mapStateToProps = state => {
    return {
        count: state.count  // <-- name conflict
    }
}

const mapDispatchToProps = (dispatch) => {
    return {
        count: () => dispatch(action.Increment()) // <-- name conflict
    }
}

提供不同的名称,状态计数,操作可能递增

const mapStateToProps = state => ({
  count: state.count,
});

const mapDispatchToProps = (dispatch) => ({
  increment: () => dispatch(action.Increment())
})
 类似资料:
  • 我不明白自己的道具在文档中是如何工作的,请帮我澄清以下内容: > 如果我有3个组件-1。todoList、todo和connectedTodo(,todolist会呈现大量connectedTodo并向其传递道具,这是否意味着todo将有权访问从todolist传递的道具?如果我没有指定ownProps,则todo将无法访问传递给connectedTodo的道具? 每当组件收到新道具时,MapSt

  • 我试图将我的类组件转换为功能组件,但我的过滤器不再工作了。 主要的错误是当我想转换listProducts因为我不知道如何定义与useState为这种情况下的preState 如何能为情况更新状态? 这是我的密码 类组件 功能成分

  • 问题内容: 我正在尝试了解react-redux的connect方法及其作为参数的功能。特别是。 以我的理解,它的返回值将是一个从状态派生的对象(因为它存在于商店中),其键将作为道具传递给目标组件(应用了connect的组件)。 这意味着目标组件所消耗的状态与存储在商店中的状态可能具有截然不同的结构。 问:可以吗? 问:这是预期的吗? 问:这是反模式吗? 问题答案: 问: 答:是的 问: 是的,这

  • 是否可以从mapStateToProps设置属性并使用setState更改状态并将该信息保存到我的数据库?数据是从谷歌图书api返回的,我想保存一小部分数据。 我的状态: 函数设置状态并保存到数据库 savedData返回未定义的

  • 这是我的构建。 当我运行我的项目时,我看到了这个错误 错误:(59, 8) 错误: 无法访问.app活动组件Api23类文件 和 错误:任务“:app:compileDebugJavaWithJavac”的执行失败。 编译失败;有关详细信息,请参阅编译器错误输出。 我该如何解决这个问题???:(

  • dagger的生成组件无法找到kotlin类的符号,即使该组件上没有读取行。 任务:app:compilestatingdebugjavawithjavac失败 当我用java输入代码时,它运行成功,这个问题只在windows中发生。它不出现在mac或linux中。 错误:任务执行失败:app:compilestatingdebugjavawithjavac 编译失败;有关详细信息,请参阅编译器错