Javascript TypeError:无法读取属性';州';当我将类更改为函数时未定义的
Javascript TypeError:无法读取属性';州';当我将类更改为函数时未定义的,javascript,reactjs,typeerror,Javascript,Reactjs,Typeerror,常量Home=()=>{ React.state={ 活动索引:0, 动画:错误, } React.setActiveIndex=(i)=>{ this.setState({activeIndex:i}); } React.setAnimating=(v)=>{ this.setState({animating:v}); } React.next=()=>{ 如果(this.state.animating)返回; 常数nextIndex= this.state.activeIndex==item
常量Home=()=>{
React.state={
活动索引:0,
动画:错误,
}
React.setActiveIndex=(i)=>{
this.setState({activeIndex:i});
}
React.setAnimating=(v)=>{
this.setState({animating:v});
}
React.next=()=>{
如果(this.state.animating)返回;
常数nextIndex=
this.state.activeIndex==items.length-1
? 0
:this.state.activeIndex+1;
这个.setActiveIndex(nextIndex);
};
React.previous=()=>{
如果(this.state.animating)返回;
常数nextIndex=
this.state.activeIndex==0
?项目长度-1
:this.state.activeIndex-1;
这个.setActiveIndex(nextIndex);
};
React.goToIndex=(newIndex)=>{
如果(this.state.animating)返回;
这个.setActiveIndex(newIndex);
};
React.slides=items.map((item)=>{
返回(
this.setAnimating(true)}
onExited={()=>this.setAnimating(false)}
key={item.src}
>
);
});
useffect(()=>{
Aos.init({duration:2000})
}, [])
返回(
{this.slides}
);
}
Home.propTypes={};
导出默认主页;
我想将这个组件从类更改为函数,然后出现了这个错误。
我还得到了“ReferenceError:状态未定义”和“TypeError:无法读取未定义的属性'state'”
我想从类更改为函数以添加aos动画。
那么我该如何解决这些错误呢。
问题主要在于引导滑块的代码。功能组件中没有此代码。您需要使用
useState
hook重构您的状态
import React, {useState} from 'react';
const [state, setState] = useState({
activeIndex: 0,
animating: false,
})
要更改状态,可以这样做
如果需要更改activeIndex
const setActiveIndex = (i) => {
setState((prevState) => { ...prevState, activeIndex: i });
}
const setAnimating= (v) => {
setState((prevState) => { ...prevState, animating: v });
}
如果需要更改activeIndex
const setActiveIndex = (i) => {
setState((prevState) => { ...prevState, activeIndex: i });
}
const setAnimating= (v) => {
setState((prevState) => { ...prevState, animating: v });
}
您应该将this.state.activeIndex
实例更改为state.activeIndex
。这同样适用于动画制作
您还应该从函数引用中删除此。例如:
而不是
this.setActiveIndex(nextIndex);
应该是,
setActiveIndex(nextIndex);
希望这有助于进行重构 @Sadeen Alaa,看看这个!!