【问题标题】:Unhandled Rejection (TypeError): adminList is not iterable未处理的拒绝(TypeError):adminList 不可迭代
【发布时间】:2021-03-11 20:30:58
【问题描述】:

我正在尝试在我的数据库中注册管理员,但在我的数据库中注册管理员后它一直抛出错误;未处理的拒绝(TypeError):adminList 不可迭代

    const request = axios.post(`/api/admin/register-admin`,admin)

    return (dispatch) =>{
        request.then(({data})=>{
            let admins = data.success ? [...adminList, data.admin]:adminList // this is where the error is pointing at
            let response = {
                success:data.success,
                admins
            }
            dispatch({
                type:'ADMIN_REGISTER',
                payload:response
            })
        })
    }
} ```

【问题讨论】:

  • 那么,adminList 在这种情况下是什么?

标签: node.js reactjs redux react-redux react-router


【解决方案1】:

您正在使用adminList,但我看不到此变量的定义位置。我假设,您忘记定义它,因此它是 undefined,当您尝试将 undefined 传播为 [...undefined] 时,您会收到此错误。

【讨论】:

    【解决方案2】:

    您需要了解错误是什么:当您想要迭代尚未实现可迭代协议的某些内容时,就会出现此错误。例如:

    var obj = { 'France': 'Paris', 'England': 'London' };
    for (let p of obj) { // TypeError: obj is not iterable
        // …
    }
    

    以及如何使它成为可迭代的协议:

    Instead you have to use Object.keys or Object.entries, to iterate over the properties or entries of an object.
    
    var obj = { 'France': 'Paris', 'England': 'London' };
    // Iterate over the property names:
    for (let country of Object.keys(obj)) {
        var capital = obj[country];
        console.log(country, capital);
    }
    
    for (const [country, capital] of Object.entries(obj))
        console.log(country, capital);
    

    在您的情况下,我看不到 adminList 以及它在哪里声明和分配任何值。所以,我认为您想遍历对象并将其分配给数组。扩展运算符无法做到这一点,您不能将对象扩展为数组。

    var obj = {'test': 'test 1'};
    var obj1 = {...obj};
    console.log(obj1);
    
    var arr = [1, 2, 3];
    var arr1 = [...arr];
    console.log(arr1);
    
    // now when you spread obj to array or vice versa you wil get the type error
    
    var arr1 = [...obj];
    var obj2 = {...arr1};

    更多信息请阅读this

    【讨论】:

    • 谢谢,我已经想通了。我在迭代而不是实现,因此出现了错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2021-02-27
    • 1970-01-01
    • 2022-01-03
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多