【发布时间】:2019-10-25 05:46:49
【问题描述】:
我想更新一个依赖于其他计算状态(服务器)的状态(数据)
setServer(prevTweets =>
[...json, ...prevTweets].filter(
(e, i, arr) => i === arr.findIndex(t => t.tweetId === e.tweetId)
)
)
上面的数据将用于设置下面的状态(数据):
let totalPositive = 0;
let totalNegative = 0;
let totalNeutral = 0;
server.forEach(tweet => {
if(tweet.sentiment >0) totalPositive++;
if(tweet.sentiment < 0) totalNegative++;
if(tweet.sentiment ===0) totalNeutral++;
})
setData([
{ name: 'Positive', value: totalPositive },
{ name: 'Negative', value: totalNegative },
{ name: 'Neutral', value: totalNeutral },
])
由于是异步的,setData 操作总是迟到。我知道我可以使用 useEffect 但显然它会造成无限循环,在这种情况下使用它是不对的。
【问题讨论】:
-
如果我做对了,那么您使用的服务器值是
setData。只需观察server的变化,您就可以使用 setData 逻辑useEffect。如果您可以添加相同的基本代码和框示例,那就太好了。 -
您可以尝试将服务器传递给设置数据的函数,然后在设置服务器之前调用该函数:
newServer=[...json,...pref]...;functionToSetData(newServer);setSerer(newSerer)
标签: reactjs react-hooks