我有一个函数eventQuery,它从Firebase DB中获取数据。我可以看到数据被成功提取,并返回我所理解的数组的数组,每个数组由一个字符串和一个对象组成。首先,我的代码:
const [activeDate, setActiveDate] = useState(new Date())
const [existingEvents, setExistingEvents] = useState({})
useEffect(() => {
eventQuery(activeDate)
.then(data => {
setExistingEvents(data);
console.log(data)
})
.then(setExistingEvents(''))
.catch(err => console.log('no events'))
}, [activeDate])
useEffect(() => {
console.log('existingEvents equals: ' + existingEvents)
}, [existingEvents])
promise中console.log(data)的输出将生成以下形式的内容:
[["String1.1", {"String1.2": "String1.3", "String1.4": "String1.5", "String1.6": "String1.7"], ["String2.1", {etc.}], ["String3.1", {etc.}]]
但是,当我使用setExistingEvents(data)将该数组传递给existingEvents,然后在控制台上记录新值时,结果是:
existingEvents equals: String1.1,[object Object],String2.1,[object Object],String3.1,[object Object]
据我所知,setState()实际上是在我的数组数组上运行toString()。我做错了什么吗?还是这是函数的固有部分?非常感谢您的帮助。
2条答案
按热度按时间nwsw7zdq1#
您的
console.log
语句实际上是输出看起来像existingEvents
被字符串化的原因(setState没有字符串化参数)。取代:
它应该是:
另外,第二个
.then()
函数应该是:h43kikqp2#
你的问题是你使用了字符串追加
如果希望整个数据都是字符串格式,可以使用
JSON.stringify
或者在
console.log
中使用分隔符,