【发布时间】:2018-12-21 13:19:57
【问题描述】:
当我重定向到同级组件时,浏览器中的 URL 发生了变化,并返回了一个空白页面。
当我尝试直接通过 url 访问组件时,仍然会出现空白页。
Index.js(路由在这里定义)
import React, { Component } from "react";
import { render } from "react-dom";
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import { BrowserRouter, Route } from "react-router-dom";
import loginComponent from "./loginComponent";
import { AccountComponent } from "./AccountComponent";
class APP extends React.Component {
render() {
return (
<BrowserRouter>
<div>
<Route path="/" exact component={loginComponent} />
<Route path="/GetAllAccounts" exact component={AccountComponent} />
</div>
</BrowserRouter>
);
}
}
render(
<MuiThemeProvider>
<APP />
</MuiThemeProvider>,
document.getElementById('root')
);
LoginComponent.js(发生重定向的地方,这里跳过了所有的html和验证,因为它没有引起任何问题。)
Axios.post('http://localhost:49776/api/Home/DoLogin', model, headers)
.then(result => {
localStorage.setItem("accounts", result.data);
console.log(result);
console.log(result.data);
this.props.history.push("/GetAllAccounts");
});
export default withRouter(loginComponent);
所以在成功调用 Rest API 后,它会重定向到 GetAllAccounts。
帐户组件
import React from "react";
import { Table } from 'react-bootstrap';
export class AccountComponent extends React.Component {
构造函数(道具){ 超级(道具) this.state = { 数据:[] } } 组件DidMount() { 警报(localStorage.getItem(“帐户”)); this.setState({ data: localStorage.getItem("accounts") }); };
render() {
return (
<Table striped bordered condensed hover>
<thead>
<tr>
<th></th>
<th>ID</th>
<th>Name</th>
<th>OwnerFirstName</th>
<th>OwnerLastName</th>
</tr>
</thead>
<tbody>
{this.state.data.map(item => {
return (
<tr>
<td>item.Id</td>
<td>item.Name</td>
<td>item.OwnerFirstName</td>
<td>item.OwnerLastName</td>
</tr>
);
})}
</tbody>
</Table>
);
}
}
事件 componentDidMount 中也没有警报。
在控制台显示数据未定义,我正在设置这样的数据
componentDidMount() {
alert(localStorage.getItem("accounts"));
this.setState({ data: localStorage.getItem("accounts") });
}
我无法弄清楚这里出了什么问题。
【问题讨论】:
-
您是否混淆了 AccountComponent 和 AccountDetails?
-
@PierreC。我更新了问题,它具有正确的组件名称以及控制台中的错误。
-
尝试使用
window.localStorage,无论您使用过localStorage。如果它运行,我会在答案中解释 -
@AseemUpadhyay 没有任何变化,看来 componentdidmount 事件永远不会触发
标签: javascript reactjs react-router