簡體   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