jump-player-tab-container.js:129 Uncaught (in promise) ReferenceError: isActive is not defined(...)r

Posted

技术标签:

【中文标题】jump-player-tab-container.js:129 Uncaught (in promise) ReferenceError: isActive is not defined(...)render @ jump-player-tab-container.js:129【英文标题】:jump-player-tab-container.js:129 Uncaught (in promise) ReferenceError: isActive is not defined(…)render @ jump-player-tab-container.js:129 【发布时间】:2017-04-08 07:15:42 【问题描述】:

我是js 的新手,我正在尝试传递道具isActive。但我遇到了一个错误。你们能告诉我为什么我得到下面的错误提供代码。我在这一行出现错误<AccountSetupTab sportsPhone=this.props.sportsPhone isActiveSecond=isActive />

import React from 'react';
import connect from 'react-redux';
import moment from 'moment';


import height from './jump-player-tab-content';
import weight from './jump-player-pane-content';
import AccountSetupTab from './running-setup';
import BalancePortfolio from './balance-portfolio';


class FirstTimeTab extends React.Component 

    constructor(props) 
        super(props);

        this.state = 
            runningSetup: 'jump-player-active',
            investmentPurchase: 'sports-invest-ico',
            balancePortfolio: 'sports-balance-ico',
            performance: 'sports-perf-ico',
            selectedTab: 0
        ;
    


    componentWillMount() 

            let sportsPhone, runningSnapshot, runningPositions, runningPerformance = this.props;
        let managedProductActivationDate = this.props.sportsPhone.managedProductActivationDate;
        let past1Day = moment().subtract(1, 'days').format('YYYY-MM-DD');
        let isActive= managedProductActivationDate < past1Day;

        if(sportsPhone !== '' && !isActive) 
            this.setState(
                selectedTab: 0,
                runningSetup: "sports-setup-ico jump-player-active ft-active-tab"
            );
        else if(isActive) 
            this.setState(
                selectedTab: 1,
                runningSetup: "sports-setup-ico ft-prev-day",
                investmentPurchase: "sports-invest-ico jump-player-active ft-active-tab"
            );
        else if(runningSnapshot !==  undefined && runningPositions.positions.length > 0 ) 
            this.setState(
                selectedTab: 2,
                runningSetup: "ft-prev-day",
                investmentPurchase: "ft-prev-day",
                balancePortfolio: "sports-balance-ico jump-player-active ft-active-tab"
            );
        else if(runningPerformance !==  undefined ) 
            this.setState(
                selectedTab: 3,
                runningSetup: "dft-prev-day",
                investmentPurchase: "ft-prev-day",
                balancePortfolio: "ft-prev-day",
                performance: "sports-perf-ico jump-player-active ft-active-tab"
            );
        
    

    callback(selectedTab)
        if (this.state.selectedTab !== selectedTab) 
            switch(this.state.selected) 
                case 0:
                    let temp = this.state.runningSetup.substring(32, 45);
                    this.setState(runningSetup: temp);
                    break;
                case 1:
                    let temp1 = this.state.runningSetup.substring(33, 46);
                    this.setState(runningSetup: temp);
                    break;
                case 2:
                    let tem2 = this.state.runningSetup.substring(34, 47);
                    this.setState(runningSetup: temp);
                    break;
                case 3:
                    let temp3 = this.state.runningSetup.substring(31, 41);
                    this.setState(runningSetup: temp);
                    break;

            
            switch(selected) 
                /*case 0:
                    let temp = this.state.runningSetup+' ft-active-tab';
                    this.setState(runningSetup: temp);
                    break;*/
                case 0:
                    let temp4 = this.state.runningSetup.substring(0, 32);
                    this.setState(runningSetup: temp);
                    break;
                case 1:
                    let temp5 = this.state.runningSetup.substring(0, 33);
                    this.setState(runningSetup: temp);
                    break;
                case 2:
                    let temp6 = this.state.runningSetup.substring(0, 34);
                    this.setState(runningSetup: temp);
                    break;
                case 3:
                    let temp7 = this.state.runningSetup.substring(0, 31);
                    this.setState(runningSetup: temp);
                    break;
            
        
    

    render () 


        // service changes need to be done


        let isActiveSecond= managedProductActivationDate < past1Day;
   // let sportsPhone, runningSnapshot, runningPositions, runningPerformance = this.props;
        let managedProductActivationDate = this.props.sportsPhone.managedProductActivationDate;
       let past1Day = moment().subtract(1, 'days').format('YYYY-MM-DD');
      //  let isActive= managedProductActivationDate < past1Day;

        //let selectedTab = 0;



        return (
            <height selected= this.state.selectedTab>
                <weight label="Account Setup" subtitle="Days 1 and 2" liClass= this.state.runningSetup>
                    <div>
                        <AccountSetupTab sportsPhone=this.props.sportsPhone isActiveSecond=isActive />
                    </div>
                </weight>
                <weight label="Investments Purchase" subtitle="Approx. Day 3" liClass=this.state.investmentPurchase>
                    <div className="sports-tab-content">
                        <p className="sports-large-text ft-day1 ft-day2">
                          Once we verify your deposit and your running has been funded, we’ll start purchasing ETFs for your portfolio. 
                        </p>
                    </div>
                </weight>
                <weight label="Balance and Portfolio" subtitle="Approx. Day 4" liClass=this.state.balancePortfolio>
                    <div >
                        <BalancePortfolio portfolio=this.props.portfolio />
                    </div>
                </weight>
                <weight label="Performance" subtitle="Approx. Day 5" liClass=this.state.performance>
                    <div className="sports-tab-content">
                        <p className="sports-large-text ft-day1 ft-day2 ft-day3 ft-day4">
                          You’ll be able to monitor your portfolio as it responds to daily market changes. 
                        </p>
                    </div>
                </weight>
            </height>
        );
    


FirstTimeTab.propTypes = 
    sportsPhone: React.PropTypes.object.isRequired,
    runningSnapshot: React.PropTypes.object.isRequired,
    runningPositions: React.PropTypes.object.isRequired,
    runningPerformance: React.PropTypes.object.isRequired,
    portfolio: React.PropTypes.object.isRequired,
    managedProductActivationDate: React.PropTypes.object.isRequired
;

function select(state) 
    return 
        sportsPhone: state.sportsPhone,
        runningSnapshot: React.PropTypes.object.isRequired,
        runningPositions: React.PropTypes.object.isRequired,
        runningPerformance: React.PropTypes.object.isRequired,
        portfolio: state.portfolio,
        past1Day: React.PropTypes.number,
        isActive: React.PropTypes.object.isRequired
    ;


export default connect(select)(FirstTimeTab);

【问题讨论】:

【参考方案1】:

您需要指定isActive as a prop,因为connect 函数将其作为道具提供给React 组件。这就是它为您提供undefined error 的原因。希望能解决你的问题

<AccountSetupTab sportsPhone=this.props.sportsPhone isActiveSecond=this.props.isActive />

【讨论】:

所以我需要在这里提一下 FirstTimeTab.propTypes = 您已经将 select 函数与 FirstTimeTab 组件绑定,因此可能不需要它。如果您仍然收到错误,则可以尝试。我不认为它需要

以上是关于jump-player-tab-container.js:129 Uncaught (in promise) ReferenceError: isActive is not defined(...)r的主要内容,如果未能解决你的问题,请参考以下文章