我想知道如何在使用 useEffect 获取数据后运行函数,函数在提取数据后在哪里操作数据?
import React, { useState, useEffect } from 'react';
const Result = (props) => {
const [ playerName, setPlayerName ] = useState('');
const [ playerChoice, setPlayerChoice ] = useState(null);
const [ computerChoice, setComputerChoice ] = useState(null);
const [ result, setResult ] = useState(null);
useEffect(() => {
setPlayerName(props.location.state.playerName);
setPlayerChoice(props.location.state.playerChoice);
setComputerChoice(generateComputerChoice);
setResult(getResult())
}, []);
const getResult = () => {
// code that runs after the setting of the playerName and playerChoice. Will return "Win", "Lose", or "Draw"
};
const generateComputerChoice = () => {
const outcomes = [ 'Rock', 'Paper', 'Scissors' ];
return outcomes[Math.floor(Math.random() * outcomes.length)];
};
return (
<div className="app-container">
<strong>YOU {result}</strong>
<br />
<strong>{playerName}</strong> chose <strong>{playerChoice}</strong>
<br />
<strong>Computer</strong> chose <strong>{computerChoice}</strong>
</div>
);
};
export default Result;
因此,在此示例中,我从上一页中获取playerName
and playerChoice
,然后在页面加载时将其添加到我的 useState 中。
之后我随机生成computerChoice
.
但是,在那之后,我想使用已经添加到状态中的playerChoice
AMD ,并使用它来查看游戏是赢、输还是平。computerChoice
result
最终是null
因为我假设在getResult
调用函数时,状态尚未设置。
大家知道在这种情况下应该怎么做吗?考虑到您可能想从 API 中获取数据,然后在渲染之前对这些数据进行处理,这似乎是一件很常见的事情。