Javascript 三元运算符对此不起作用。状态为
尝试通过单击更改标题背景颜色(首先,最终我会随着样式进行更多更改) 然而,它失败了Javascript 三元运算符对此不起作用。状态为,javascript,css,reactjs,jsx,Javascript,Css,Reactjs,Jsx,尝试通过单击更改标题背景颜色(首先,最终我会随着样式进行更多更改) 然而,它失败了 toggleHeader(){ var newState; newState = "headerBig" ? "headerSmall" : "headerBig"; this.setState({ toggleHeader: newState }) } 我试图更改的是我的头类名={this.state.toggleHeader} 我做得不对吗 控制台日志在更改一次后继续返回“h
toggleHeader(){
var newState;
newState = "headerBig" ? "headerSmall" : "headerBig";
this.setState({
toggleHeader: newState
})
}
我试图更改的是我的头类名={this.state.toggleHeader}
我做得不对吗
控制台日志在更改一次后继续返回“headerSmall”
固定的
我用这个代码来修复它。。。
添加了一个“大”状态,我也在切换它。看起来工作加倍了,但是
toggleHeader(){
var newState=(this.state.isHeaderBig?“headerSmall”:“headerBig”);
这是我的国家({
toggleHeader:newState,
isHeaderBig:!this.state.isHeaderBig
})
}
使用三元运算符写入行的正确方法是:
newState = newState === "headerBig" ? "headerSmall" : "headerBig";
请注意?
左侧的比较
否则,只需“headerBig”
将始终计算为true
,三元运算符将始终返回“headerSmall”
。这是第一个问题
第二个问题是,您必须将newState
置于函数之外,否则它会在单击之间失去状态
这是一个工作示例:
var newState=“headerBig”//在处理程序之外
$(“#headertest”)。在(“单击”,()=>{
newState=newState==“headerBig”?“headerSmall”:“headerBig”;//带条件
$(“#标题测试”).text(新闻状态);
});
$(“#headertest”).text(newState);//初始化
使用三元运算符写入行的正确方法是:
newState = newState === "headerBig" ? "headerSmall" : "headerBig";
请注意?
左侧的比较
否则,只需“headerBig”
将始终计算为true
,三元运算符将始终返回“headerSmall”
。这是第一个问题
第二个问题是,您必须将newState
置于函数之外,否则它会在单击之间失去状态
这是一个工作示例:
var newState=“headerBig”//在处理程序之外
$(“#headertest”)。在(“单击”,()=>{
newState=newState==“headerBig”?“headerSmall”:“headerBig”;//带条件
$(“#标题测试”).text(新闻状态);
});
$(“#headertest”).text(newState);//初始化
基本上与
if ("headerBig") {
newState = "headerSmall"
} else {
newState = "headerBig"
}
你知道问题出在哪里吗<代码>“headerBig”是真实的,因此第一个案例将运行
也许你的意思是:
newState = oldState === "headerBig" ? "headerSmall" : "headerBig";
基本上与
if ("headerBig") {
newState = "headerSmall"
} else {
newState = "headerBig"
}
你知道问题出在哪里吗<代码>“headerBig”是真实的,因此第一个案例将运行
也许你的意思是:
newState = oldState === "headerBig" ? "headerSmall" : "headerBig";
})
这是正确的方式,“headerBig”总是正确的
})
这是正确的方法,“headerBig”总是正确的您正在测试一个字符串,而不是一个变量。“headerBig”是正确的…谢谢我现在看到了我的noobish方法:(您正在测试一个字符串,而不是一个变量。“headerBig”是真实的…谢谢我现在看到了我的noobish方式。:(但他使用
var newState;
对此有何评论?这是jQuery吗?所以我应该在渲染之前设置newState,然后将其传递到函数onClick?所以我最后做的是传递“this.state.toggleHeader”进入函数,然后:`toggleHeader(s){s=(s===“headerBig”?“headerSmall”:“headerBig”);this.setState({toggleHeader:s})`但是他使用了var newState;
对此有任何评论吗?这是jQuery吗?所以我应该在渲染之前设置newState,然后将其传递到函数onClick中?所以我最后做的是将“this.state.toggleHeader”传递到函数中,然后:`toggleHeader(s){s=(s==“headerBig”;“headerSmall”:“headerBig”);this.setState({toggleHeader:s})}噢,天哪。我怎么会忘了呢。非常感谢:)噢,天哪。我怎么会忘了呢。非常感谢:)