Javascript React-setState(…)只能更新

Javascript React-setState(…)只能更新,javascript,reactjs,Javascript,Reactjs,我有一个问题,关于setState函数,这就是问题所在: 警告:设置状态(…):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了setState()。这是禁止操作。请检查登录组件的代码 我不知道为什么会发生这是代码: LogIn.js(初始页面) import React,{Component}来自'React'; 从“firebase”导入firebase; 从'react router dom'导入{Redirect}; 导出默认类登录扩展组件{ 建造师(道具){ 超级(

我有一个问题,关于setState函数,这就是问题所在:

警告:设置状态(…):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了setState()。这是禁止操作。请检查登录组件的代码

我不知道为什么会发生这是代码:

LogIn.js(初始页面)

import React,{Component}来自'React';
从“firebase”导入firebase;
从'react router dom'导入{Redirect};
导出默认类登录扩展组件{
建造师(道具){
超级(道具);
此.state={
洛格丁:错
};
}
handleAuth(){
让email=document.getElementById('email').value;
让password=document.getElementById('password')。值;
设auth=firebase.auth();
让promise=auth.signInWithEmailAndPassword(电子邮件,密码);
承诺。然后(结果=>{
console.log(result.email);
});
promise.catch(错误=>{
var errorCode=error.code;
var errorMessage=error.message;
控制台日志(错误代码);
警报(错误消息);
});
}
componentDidMount(){
firebase.auth().onAuthStateChanged(firebaseUser=>{
console.log(firebaseUser.email);
if(firebaseUser.email){
这是我的国家({
洛格丁:是的
});
}
否则{
警报(“无日志”);
}
});
}
render(){
if(this.state.loggedIn){
返回();
}
返回(
伊尼西亚·塞西翁
);
}
}
Dashboard.js(当loggedIn为true时重定向此页面)

import React,{Component}来自'React';
从“../../components/Template/Header/Header.js”导入标题;
从“../../components/Template/Users/PanelUsers.js”导入PanelUsers;
从“../../components/Dashboard/Cards/CardGroup.js”导入CardGroup;
从“../../components/Dashboard/DetailCard/CardDecks.js”导入卡片组;
从“../../store”导入存储;
从“../../db”导入{Dashboard};
导出默认类登录扩展组件{
构造函数(){
仪表板();
超级();
此.state={
数据状态:[]
};
}
componentDidMount(){
store.subscribe(()=>{
这是我的国家({
dataState:store.getState().dataDashboardReducer.data
});
});
}
组件将卸载(){
console.log(“componente desmontado仪表板”);
}
render(){
返回(
);
}
}

当我转到另一个页面并返回登录时,会发生这种情况,因为您试图在componentWillMount()中设置状态,而组件尚未装入。将其更改为componentDidMount(),应该可以正常工作。

发生这种情况是因为您试图在componentWillMount()中设置状态,而组件尚未装入。将其更改为componentDidMount(),它应该可以正常工作。

我将设置状态放在componentDidMount()中,但我有相同的设置error@Lias因为当组件卸载时,您试图
setState
。我修复了它,我放置了componentWillUnmount(),因为我尝试了所有react.component函数,但是我仍然犯了同样的错误,我把setStates放在componentDidMount()中,但是我有同样的错误error@Lias因为当组件卸载时,您试图
setState
。我修复了它,因为我尝试了所有react.component函数,所以我放置了componentWillUnmount(),但仍然出现了相同的错误
import React, { Component } from 'react';
import firebase from 'firebase';
import { Redirect } from 'react-router-dom';
export default class LogIn extends Component {
  constructor(props) {
    super(props);

      this.state = {
       loggedIn : false
     };
  }

  handleAuth(){
    let email = document.getElementById('email').value;
    let password = document.getElementById('password').value;
    let auth = firebase.auth();
    let promise = auth.signInWithEmailAndPassword(email, password);
    promise.then(result=>{
      console.log(result.email);
    });
    promise.catch(error=> {
      var errorCode = error.code;
      var errorMessage = error.message;
      console.log(errorCode);
      alert(errorMessage);
    });
  }
componentDidMount(){
      firebase.auth().onAuthStateChanged(firebaseUser =>{
      console.log(firebaseUser.email);
      if (firebaseUser.email) {
        this.setState({
          loggedIn: true
        });
      }
      else{
        alert("No logeado");
      }
    });
}
  render(){
    if (this.state.loggedIn) {
      return ( <Redirect to="/Dashboard"/> );
    }
    return(
      <div className="container comunidadLogIn">
        <div className="row" >
          <div className="col-sm-2 push-5 align-self-center" >
           <input type="text" name="email" id="email" placeholder="Email"/>
          </div>
        </div>

        <div className="row" >
          <div className="col-sm-2 push-5 align-self-center" >
           <input type="password" name="password" id="password" placeholder="Password"/>
          </div>
        </div>
          <div className="row" >
          <div className="col-sm-2 push-5 align-self-center" >
           <button className="btn btn-secondary" onClick={this.handleAuth} id="btnLogin">Iniciar sesión</button>
          </div>
        </div>
      </div>
    );
  }
}
import React, { Component } from 'react';

import Header from '../../components/Template/Header/Header.js';
import PanelUsers from '../../components/Template/Users/PanelUsers.js';
import CardGroup from '../../components/Dashboard/Cards/CardGroup.js';
import CardDecks from '../../components/Dashboard/DetailCard/CardDecks.js';

import store from '../../store';
import { Dashboard } from '../../db';

export default class LogIn extends Component {
  constructor() {
    Dashboard();
    super();
    this.state = {
      dataState: []
    };
  }
  componentDidMount(){
    store.subscribe(()=>{
      this.setState({
        dataState: store.getState().dataDashboardReducer.data
      });
    });
  }
  componentWillUnmount(){
    console.log("componente desmontado Dashboard");
  }
  render(){
    return(
      <div>
      <Header />
        <div className="row">
          <div className="col-sm-2">
            <PanelUsers/>
          </div>
          <div className="col-sm-6" >
            <CardGroup datos= { this.state.dataState }/>
          </div>
          <div className="col-sm-4">
            <CardDecks/>
          </div>
        </div>

      </div>
    );
  }
}