【发布时间】:2021-08-10 17:49:14
【问题描述】:
我的组件的初始状态是一个对象数组。我正在使用 Redux 获取另一个对象数组,如您在下面的代码中所见。我正在检查 outCalls 是否为真,如果是,我正在创建一个可以与状态连接的新对象数组。
但是,在我的依赖项数组中,它说我缺少data。如果我添加它,它会创建一个疯狂的循环并且我得到错误。就目前而言,对象数组并未加入状态。
useEffect(() => {
if(outCalls) {
const transformedOutgoingCalls = outCalls.filter(call => call.contractor._id === props.contractor._id).map(c => ({
type: 'Outgoing Call',
contact_person: c.contact_person,
logged_by: c.created_by.name,
date: c.time_created,
link: <> <LinkContainer to={`/outgoing-calls/${c._id}`} className='text-success' style={{ cursor: 'pointer'}}><Eye /></LinkContainer> </>
}))
const newData = [...data, transformedOutgoingCalls]
setData(newData)
}
}, [outCalls, props.contractor._id])
【问题讨论】:
-
你在哪里声明变量
data? -
尝试将setData改成它的回调版本,在这个版本中你可以访问之前的状态,useEffect将不再抱怨
setData(prevData => [...prevData, tranformedOutgoingCalls]) -
当
contractor._id为 1 时,您的州将有一个仅包含contractor._id1 信息的列表。现在,如果contractor._id为 2,您所在的州是否有一份包含承包商信息或仅包含承包商 2 信息的列表? -
@Shyam 只是承包商 2,因此它正在获取承包商 ID 方面的正确数据,当我返回页面时只需复制它
标签: javascript arrays reactjs use-state