Javascript 在react中更新状态时使用if时出错
我想在条件为真时更新这个变量,但它不允许,谢谢Javascript 在react中更新状态时使用if时出错,javascript,arrays,reactjs,variables,if-statement,Javascript,Arrays,Reactjs,Variables,If Statement,我想在条件为真时更新这个变量,但它不允许,谢谢 constructor(props){ super(props); var isActive = false; this.props.items.map(item => ( if(item.name == this.props.product.name) { isActive = true;
constructor(props){
super(props);
var isActive = false;
this.props.items.map(item => (
if(item.name == this.props.product.name) {
isActive = true;
}
));
this.state = {
active: isActive
};
console.log(isActive);
this.handleClick = this.handleClick.bind(this);
}
原因是,您忘记了使用
{}
,如果您正在使用任何条件或想要进行一些计算,请使用{}
,并将所有语句放在其中。还有一件事,因为您只想迭代数组
意味着不返回任何内容,所以在这种情况下,我使用forEach
而不是map
,请使用以下命令:
this.props.items.forEach(item => { //here
if(item.name == this.props.product.name) {
isActive = true;
}
});
检查此代码,它将产生相同的错误:
[1,2,3,4].forEach(el=>(
如果(el%2==0)
控制台日志(el);
))
您实际上没有传递“活动”属性或状态。您正试图设置一个计算属性,很像余烬(请参见)。这被认为是一种反应,并被驳回
您应该创建一个函数,isActive()
,并在需要时调用它。我希望您仅在呈现isActive是其属性的一组单个项组件时才需要它
也就是说,有很多方法可以将其塞进React代码库,但您的代码将无法维护。Javascript控制台中是否有错误?这看起来不像是有效的Javascript语法,但我不知道react是否修复了它。在普通JS中,如果括号中有
if
,那么函数体周围应该有{}
。为什么不setState
?因为在构造函数中,我们不能在构造函数中调用setState,它应该是这样的:this.props.items.forEach((item)=>{//here if(item.name==this.props.product.name){isActive=true;}})@维德没抓住你,有什么区别?他使用的是单参数,因此()
项不需要。当有人需要索引时,这很有用,也意味着多个参数:)