【发布时间】:2021-09-15 19:10:37
【问题描述】:
我在更新团队代码以应用不活动功能时遇到了一些问题。但是当我尝试这样做时,我在控制台上收到一条错误消息
TypeError: Object(...) 不是函数
如果有人知道或知道问题的真正原因,请告诉我。
这是控制台
代码如下:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as Actions from '../actions';
import NeedContainer from './NeedContainer';
import ProfilContainer from './ProfilContainer';
import DealContainer from './DealContainer';
import AmountContainer from './AmountContainer';
import DurationContainer from './DurationContainer';
import MonthlyContainer from './MonthlyContainer';
import ContributionContainer from './ContributionContainer';
import FeesContainer from './FeesContainer';
import createActivityDetector from 'activity-detector'
import { useState, useEffect } from 'react';
function useIdle(time) {
const [isIdle, setIsIdle] = useState(false)
useEffect(() => {
const activityDetector = createActivityDetector(time)
activityDetector.on('idle', () => setIsIdle(true))
activityDetector.on('active', () => setIsIdle(true))
return () => activityDetector.stop()
}, [])
return isIdle;
}
class SimulatorContainer extends Component {
render() {
const isIdle = useIdle({timeToIdle:1000})
if (! this.props.ready)
return (<div className="wf-loading">Loading ...</div>);
return (
<div className={this.props.className}>
<NeedContainer />
<ProfilContainer />
<AmountContainer />
<ContributionContainer />
<DurationContainer />
<MonthlyContainer />
<DealContainer />
<FeesContainer />
</div>
);
}
}
const mapStateToProps = state => {
return {
ready:state.simulator.ready,
interest:state.simulator.interest,
}
}
const mapDispatchToProps = dispatch => {
return {
isReady: (ready) => {
dispatch(Actions.isReady(ready));
}
}
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(SimulatorContainer)
【问题讨论】:
-
难道
Actions.isReady(ready)实际上被声明为不是函数?命名说明它应该是选择器。 -
我不这么认为,因为在添加
useIdle函数之前它运行良好。 -
您在类组件中使用 Hooks。钩子只能在functional components中使用。
-
我认为这是问题所在,我从未使用过类组件,如果您知道如何使用类组件做到这一点,我将非常感激。
标签: javascript reactjs