javascript - 重新渲染组件 ReactJs
问题描述
我是新来的反应和创建一些演示应用程序我想在登录用户上呈现我的标题组件但是当我使用用户登录时我的应用程序不会重新呈现 app.js 组件
这是我的 app.js
function App() {
return (
<div className="app">
<Router>
<Header user={localStorage.getItem("user")} />
<Switch>
<Route path="/login">
<LoginPage />
</Route>
</Switch>
</Router>
</div>
);
}
注意:当我登录应用程序时,我正在将我的用户保存在 localStorage 中,如果您需要更多信息,请告诉我
解决方案
您可以在 App 组件的 state 中维护用户数据,并将更新用户的函数作为 props 传递给登录组件,一旦用户登录,调用该函数更新用户状态。这将导致 App 组件重新渲染并随后更新 Header 组件。
以下是如何构建和编写代码的示例实现
function App() {
const [user, setUser] = useState(localStorage.getItem("user"));
return (
<div className="app">
<Router>
<Header user={user} />
<Switch>
<Route path="/login">
<LoginPage setUser={setUser}/>
</Route>
</Switch>
</Router>
</div>
);
}
function Login(props) {
...
onUserLogin=() => {
// Below is a mock implementation of a API service. You can use fetch or axios
Api.loginUser({...you params go here}).then(user => {
props.setUser(user); // This updates the parent component with user state
})
}
....
}
推荐阅读
- android - 满足约束时如何避免多个工人同时运行?
- codeigniter - 如何在codeigniter中提交表单后重定向url
- node.js - 在angularjs中通过history.replacestate更改url时如何停止页面刷新?
- c# - 如何使用 ASP.Net MVC 5 为 Web 应用程序连接条形码阅读器
- autodesk-forge - 查看器未从 3ds Max 读取某些数据
- awk - grep -v 多行同时
- ionic4 - Ionic 我应该何时导入 app.module 以及何时导入页面模块?
- javascript - 如何在反应js中将分页应用于动态表
- rust - 国库模块的 set_pot 功能是否可供公众使用?
- python - Python 脚本产生文件之间的差异并解析输出的 DNS 查询