react 点击两次_javascript – 构造函数被调用两次React Component

我的反应组件的构造函数被调用两次,但我无法弄清楚原因.我使用react-redux来存储我的应用程序的语言.我有一个函数,它根据浏览器的语言设置默认语言. LoginPage是第一个获取渲染的组件,因此我在其构造函数中调用了我的函数.基本上它的作用是比较和发送一个动作.当我使用redux开发人员工具检查我的状态时,我发现它已经被派遣了两次.我在构造函数中打印了虚拟数据,它也被打印了两次.

LoginPage.js

import React from 'react';

import {connect} from 'react-redux';

import {startLogin} from '../actions/auth';

import {setLanguage} from '../actions/lang';

export class LoginPage extends React.Component{

constructor(props){

super(props);

this.setDefaultLanguage();

console.log('i am constructor');

}

changeLanguage = (e) => {

const lan = e.target.value;

this.props.setLanguage(lan);

};

setDefaultLanguage = () => {

const defaultLanguage = navigator.language || navigator.userLanguage || 'en-US';

if(defaultLanguage == 'es'){

this.props.setLanguage(defaultLanguage);

}else{

this.props.setLanguage('en');

}

}

render(){

return(

Expensify

It\'s time to get your expenses under control.

Log in with google

English

Español

)

};

}

const mapDispatchToProps = (dispatch) => ({

startLogin: () => dispatch(startLogin()),

setLanguage: (language) => dispatch(setLanguage(language))

});

export default connect(undefined, mapDispatchToProps)( LoginPage);

App.js

import React from 'react';

import ReactDom from 'react-dom';

import {Router, Route, Switch} from 'react-router-dom';

import createHistory from 'history/createBrowserHistory';

import ExpenseDashBoardPage from '../components/ExpenseDashBoardPage';

import AddExpensePage from '../components/AddExpensePage';

import EditExpensePage from '../components/EditExpensePage';

import NotFoundPage from '../components/NotFoundPage';

import LoginPage from '../components/LoginPage';

import PrivateRoute from './PrivateRoute';

import PublicRoute from './PublicRoute';

export const history = createHistory();

const AppRouter = () => (

)

export default AppRouter;

解决方法:

我遇到了同样的问题,因为我在公共路线中重定向用户.所以它是两次渲染组件.如果您正在使用

history.push('/');

这将使组件呈现两次.

标签:javascript,constructor,reactjs,react-router,react-redux

来源: https://codeday.me/bug/20190611/1216579.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值