简体   繁体   English

我如何正确设置减速器?

[英]How would I set up my reducer properly?

I'm trying to toggle my modal via redux but for some reason I'm getting an error that says: TypeError: Cannot read property 'isModalOpen' of undefined (pointing to the line isOpen: state.global.isModalOpen inside List.js ) which means my root reducer isn't defined properly. 我试图通过redux切换我的模态,但是由于某种原因,我收到一条错误消息: TypeError: Cannot read property 'isModalOpen' of undefined (指向isOpen: state.global.isModalOpenisOpen: state.global.isModalOpen List.js )这意味着我的根减速器定义不正确。 But I'm sure I've defined it properly inside index.js file. 但是我确定我已经在index.js文件中正确定义了它。 What am I doing wrong and how would I be able to resolve this and use these actiontypes properly in order for it to work? 我在做什么错?如何解决该问题并正确使用这些操作类型才能使其正常工作?

Note: The <Modal/> component is an npm package I installed, I didn't create it on my own. 注意: <Modal/>组件是我安装的npm软件包,我不是自己创建的。

Here's my List.js file: 这是我的List.js文件:

import React, { Component } from 'react';
import Aux from '../../../../hoc/Aux';
import { connect } from 'react-redux';
import Modal from 'react-modal';

class List extends Component {
    state = {
       isOpen: false
    }

    componentWillMount() {
        Modal.setAppElement('body');
    }

    toggleModal = () => {
        this.setState({isActive:!this.state.isActive});
    }

    closeModal = () => {
        this.setState({isActive: false});
    }

    render() {
        return (
            <Aux>
                <CheckoutButton clicked={this.toggleModal}/>

                <Modal isOpen={this.state.isOpen}>
                    <button onClick={this.closeModal}>Close</button>
                </Modal>
            </Aux>
        );
    }
}

const mapStateToProps = state => {
    return {
        isOpen: state.global.isModalOpen
    }
};

const mapDispatchToProps = dispatch => {
    return {
        closeModalRedux: () => dispatch({type: CLOSE_MODAL})
    }
};

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

Here's my reducer.js file: 这是我的reducer.js文件:

import React from 'react';
import * as actionTypes from '../action/NoNameAction';

const initialState = {
    isModalOpen: false
};

const global = (state = initialState, action) => {
    switch(action.type) {
        case actionTypes.OPEN_MODAL:
            return {
                ...state,
                isModalOpen: true,
            }
        case actionTypes.CLOSE_MODAL:
            return {
                ...state,
                isModalOpen: false,
            }
        default:
            return state;
    }
};

export default global;

Here's my index.js file: 这是我的index.js文件:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';

import { Provider } from 'react-redux';
import { createStore, combineReducers } from 'redux';
import modalOpenReducer from './store/reducer/reducer';

const rootReducer = combineReducers({
    isOpen: modalOpenReducer
});

const store = createStore(rootReducer);

ReactDOM.render(<Provider store={store}><App/></Provider>, document.getElementById('root'));
registerServiceWorker();

将reducer文件名更改为global.js然后在root.js中将其导入为global而不是reducer。在组件中,也更改为this.props.isOpen

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我如何在我的减速器中使用一个变量,用一个对象设置 - How can I use a variable in my reducer, set with an object Node.js-如何为我的Web应用设置此小服务? - Node.js - How would I set up this little service for my web app? 如何为 json object 正确设置新变量? - How would I properly set a new variable for a json object? 如何将JQuery设置为对象文字模块? - How would I set up JQuery into an Object Literal module? 如何在 Javascript 中正确设置 Cassandra 客户端? - How do I properly set up the Cassandra client in Javascript? 如何正确设置标签和文本框填充? - How can I properly set up label and textbox padding? 如何让我的消息正确显示? - How can I get my messages to show up properly? 如何在Reducer for React Redux应用程序中设置返回的收益? - How to set what gets return in my Reducer for React Redux app? 环境变量未显示在 Nextjs 上的我的 Context 组件中。 我需要配置 Nextjs 吗? 或者设置上下文来使用变量? - Environment Variables are not showing up in my Context component, on Nextjs. Would I need to configure Nextjs? Or set up Context to use the variables? 如何在 redux 减速器文件中为 state 设置输入值? - How can I set input value to the state in redux reducer file?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM