【发布时间】:2021-10-27 02:31:20
【问题描述】:
有人可以解释为什么“条件”在收到响应并设置状态时更改时不会触发重新渲染?
运行此代码时,即使响应为真,它也始终重定向到“/unauthorized/login”。我认为当状态改变时页面总是会重新渲染。
const PrivateRoute = props => {
const [condition, setCondition] = useState('');
useEffect(() => {
if (!condition) {
getUserAccess();
}
}, [condition]);
const getUserAccess = async () => {
const response = await axios.get("/some-api");
const status = response.data; /* status will either be true or false */
setCondition(status);
}
return condition ? (<Route path={props.path} exact={props.exact} component={props.component}/>) :
(<Redirect to="/unauthorized/login"/>);
};
export default PrivateRoute;
【问题讨论】:
-
condition状态是否更新为真实值?status的值是多少? -
useState()的初始数据为什么要设置空字符串?它必须是false或true用于条件 -
@Danial Falsey values 也可以用于布尔表达式。
-
status 的值为真或假。我已经更新了问题以使其清楚。
标签: reactjs react-hooks