Я новичок в ReactJS, но у меня есть простой пример: у меня есть форма входа в систему, которая устанавливает состояние пользователя (полное имя и т. Д.), А затем я использую React Router для браузераHistory.push ('/') вернуться на главную страницу. Я могу подтвердить, что если я останусь на странице входа в систему, что мои состояния действительно будут сохранены, однако, когда я вернусь на домашнюю страницу и в свой «родительский» компонент (App.js) и запустил это до метода рендеринга:Почему я теряю свое состояние ReactJS?
console.log(this.state) // this returns null
Он всегда возвращает значение true. Мой конструктор даже не делает ничего с государством. Если я положу журнал в конструктор в своем родительском компоненте App.js, я могу проверить, что на самом деле страница не перезагружается, что компонент монтируется только один раз (по крайней мере, конструктор в App.js вызывается только один раз в течение всего домашняя страница> login> жизненный цикл домашней страницы). Опять же, государство, похоже, удаляется после смены страниц.
Какая простая вещь мне не хватает?
Edit: некоторый код, пытаясь упростить:
// LoginForm.js
//Relevant method
handleSubmit() {
this.login(this.state.username, this.state.password, (success) => {
if (!success)
{
this.setState({ isLoggedIn: false })
this.setState({ loginError: true })
return
}
this.setState({ isLoggedIn: true })
browserHistory.push('/') // I can verify it gets here and if at this point I console.log(this.isLoggedIn) I return true
})
}
// App.js
class App extends React.Component {
constructor(props) {
super(props);
console.log('hello')
}
render() {
const { props } = this
console.log(this.state) // returns null
return (
<div>
<AppBar style={{backgroundColor: '#455a64'}}
title="ADA Aware"
showMenuIconButton={false}>
<LoginBar/>
</AppBar>
<div>
{props.children}
</div>
</div>
)}
//Part of my routes.js
export default (
<Route path="/" component={App}>
<IndexRoute component={HomePage}/>
<Route path="/login" component={LoginForm}/>
<Route path="*" component={NotFoundPage}/>
</Route>
);
Как обмениваться кодом, а не пытаться его описать? – naomik
В каком состоянии? Сколько компонентов мы говорим? Как вы его обновляете? (Поделитесь некоторым кодом!) – gravityplanx
Я добавил код, дайте мне знать, если это поможет, попытался получить его с соответствующими битами –