单击按钮时,我会将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,
},
这是数组中对象的外观
2条答案
按热度按时间h79rfbju1#
所以,我终于想通了。
我的resellerId实际上是一个字符串,而不是整数。
我在对它执行typeOf()之后发现了这一点。
所以我没有使用==比较运算符,而是使用了==,它成功了。
谢谢你们👍
juud5qan2#
通常情况下,reducer的状态已经是redux工具包文档中演示的
state.resellers
,因此您可以直接执行state.find(reseller => reseller.id === resellerId)
!