繁体   English   中英

getState() 在 React-Redux 中不起作用的原因是什么?

[英]What is the reason getState() not functioning in React-Redux?

export const SMSAdmin_Filter_User = (userName) => (dispatch, getState) => {
    var st = getState();
    ...
}

当此代码运行时, getState()在调试器中被定义为一个函数,但st出现时为undefined 我在其他多个动作创建者函数中使用了 getState 并取得了巨大成功,所以我不确定为什么它在这里不起作用。

这个函数被称为承诺,因为还有其他异步进程在运行(大量用户的增量获取)。

这是它被调用的地方:

componentDidMount() {
        var el = document.getElementById("userList");
        if (el) {
            el.focus({ preventScroll: true });
        }
        // console.log("SMSAdmin")
        new Promise((res,rej)=>this.props.SMSAdmin_Get_Users());
        // .then(() => {
        //     this.setState({ users: this.props.SMSAdmin.users });
        // });
    }

    filterUsers = () => {
        let target = document.getElementById("userName");
        let name = target?.value?.toLowerCase();
        new Promise((res, rej)=>SMSAdmin_Filter_User(name?.trim()));
    }

SMSAdmin_Get_Users() filterUsers()确保更新。

这是mapDispatchToProps()

const mapDispatchToProps = (dispatch) => {
    return {
        SMSAdmin_Get_Users: () => { return dispatch(SMSAdmin_Get_Users()) },
        SMSAdmin_Load_User: (userId, userName, oldData = null, startVal = 0, number = 20) => {
            return dispatch(SMSAdmin_Load_User(userId, userName, oldData, startVal, number))
        },
        SMSAdmin_Update_User: (user, province, credits) => { return dispatch(SMSAdmin_Update_User(user, province, credits)) },
        SMSAdmin_setCurrentUpload: (userName) => { return dispatch(SMSAdmin_setCurrentUpload(userName)) },
        SMSAdmin_Filter_User: (userName) => { return dispatch(SMSAdmin_Filter_User(userName)) },
    }
}

我无法为代码提供沙箱,因为有多个其他文件与此组件关联,并且所使用的数据是机密的。

谢谢。

编辑:显示 redux 商店创建

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import logger from 'redux-logger';
import { reducers } from './reducerMain.js';

export const ConfigureStore = () => {

    const store = createStore(
        reducers,
        applyMiddleware(thunk, logger)
    );

    return store;
}

我猜你不小心使用了导入函数(不是映射到 mapDispatchToProps 中的函数)。 玩具忘记使用道具中的那个了吗? 像那样:

    filterUsers = () => {
        // ...
        new Promise((res, rej)=>this.props.SMSAdmin_Filter_User(name?.trim()));
    }

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM