Почему при попытке обновить
tabsFields
из
useEffect
он не обновляется?
// Apollo Client запрос к GraphQL серверу
const { data, error, loading } = useQuery(GET_ORG(props.match.params.essenceId))
// State который не обновляется
const [tabsFields, setTabsFields] = useState()
// отслеживаю изменение state
useEffect(() => {
if (data !== undefined) {
// перебираю массив контактных лиц
data.org.contactPersons.map(i => {
const ID = nanoid(8) // использую либу nanoid для генерации ID
let obj = {}
obj[i._id + '~' + ID + '^name'] = i.name
i.phone.map((j, idx) => {
obj[i._id + '~' + ID + '^phone-' + idx] = j
})
i.eMail.map((j, idx) => {
obj[i._id + '~' + ID + '^eMail-' + idx] = j
})
setTabsFields({...tabsFields, obj})
})
}
}, [data])
Если не хватает каких-то фрагментов кода, добавлю.
Я пытался реализовать альтернативный вариант, но лишь поменял шило на мыло
Альтернативный вариант
// Apollo Client запрос к GraphQL серверу
const { data, error, loading } = useQuery(GET_ORG(props.match.params.essenceId))
// State который не обновляется
const [tabsFields, setTabsFields] = useState({})
// отслеживаю изменение state
useEffect(() => {
if (data !== undefined) {
// перебираю массив контактных лиц
data.org.contactPersons.map(i => {
const ID = nanoid(8) // использую либу nanoid для генерации ID
let obj = {...tabsFields}
obj[i._id + '~' + ID + '^name'] = i.name
i.phone.map((j, idx) => {
obj[i._id + '~' + ID + '^phone-' + idx] = j
})
i.eMail.map((j, idx) => {
obj[i._id + '~' + ID + '^eMail-' + idx] = j
})
setTabsFields(obj)
})
}
}, [data])