redux Javascript find()数组方法返回未定义的值,我做错了什么?

nqwrtyyt  于 2022-11-12  发布在  Java
关注(0)|答案(2)|浏览(140)

单击按钮时,我会将id分派给我的resellerSlice,以便能够使用.find()并选择与我的id具有相同id的数组对象

const handleDetailsModal = (e) => {

     setResellersId(e.currentTarget.id)

     dispatch(uiAction.toggle())
     dispatch(
         toggleResellers (resellersId)
     )

 }

在到达经销商时Slice

const resellerSlice = createSlice({
        name: 'reseller',
        initialState,
        reducers: {
            toggleResellers(state, action) {
                const resellerId = action.payload;
                const clickedReseller = state.resellers?.find((reseller) => reseller.id === resellerId);

                console.log(clickedReseller) //returns undefined(this is the problem)

            }

        }
    })

我做错了什么?
我需要const 'clickedReseller'来包含其ID与'resellersId'相同的对象的属性,这样我就可以使用该对象。
这是我的初始状态

const initialState = [
    {
        resellerName: 'xxxx xxxx',
        id: 1,
        resellerLimits: [
            {
                USD: 700,
                GBP: 200,
                EURO: 990,
            }
        ],
        paymentMethods: [
            'wirePay',
            'flux',
            'bankTransfer'
        ],
        totalTransactions: 0,
        rating: 0,
    },

这是数组中对象的外观

h79rfbju

h79rfbju1#

所以,我终于想通了。
我的resellerId实际上是一个字符串,而不是整数。
我在对它执行typeOf()之后发现了这一点。
所以我没有使用==比较运算符,而是使用了==,它成功了。
谢谢你们👍

juud5qan

juud5qan2#

通常情况下,reducer的状态已经是redux工具包文档中演示的state.resellers,因此您可以直接执行state.find(reseller => reseller.id === resellerId)

相关问题