reactjs - 如何在函数调用中包装 React 状态变量?
问题描述
我有一些异步更新的状态,我想将其包装在函数调用中(以模块化代码)。
具体来说,我有一个isLoggedIn
状态变量,我想通过 React 组件内的函数调用来检索它。到目前为止,我有:
firebase.js
function userLoggedIn() {
const [isLoggedIn, setIsLoggedIn] = useState(false);
firebase.auth().onAuthStateChanged((user) => {
if (user == null) {
console.log("No user logged in.");
} else {
console.log(`User ${user.uid} authenticated!`);
setIsLoggedIn(true);
}
});
return isLoggedIn;
}
export default userLoggedIn;
我有一个单独的组件,我想从中获取此isLoggedIn
状态:
AuthenticatedRoute.js
const AuthenticatedRoute = ({ component: Component, ...rest }) => {
const isLoggedin = userLoggedIn();
return (
<Route
{...rest}
render={(props) =>
isLoggedIn ? (
<Component {...props} />
) : (
<Redirect
to={{ pathname: "/login", state: { from: props.location } }}
/>
)
}
/>
);
};
它在页面加载时工作正常,但如果我注销(并且user = null
)isLoggedIn
不会更改为 False。
如果我在内部内联函数体,这一切都很好AuthenticatedRoute
:一般来说,如何实现这一点?
解决方案
推荐阅读
- ubuntu - 在最新的 ubuntu 上编译和安装旧内核
- javascript - 用 debounce 反应回调:子组件没有将回调返回给父组件
- spring - JwtAuthorizationFilter 实现不起作用
- angular - Angular 应用程序是否可以与 Braintree API 集成以在没有传统服务器端便利的情况下管理经常性计费?
- javascript - Firebase '.get()' 不返回任何数据
- java - 试图填充数组但分配没有通过
- mininet - 如何通过 Opendaylight 控制器(GUI)更改开关配置
- android - 从数据库中获取项目 ID
- python - Python中statsmodels线性回归中的obs置信区间是什么
- react-native - Expo React Native with redux:路由的组件必须是反应组件