Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 三元运算符对此不起作用。状态为_Javascript_Css_Reactjs_Jsx - Fatal编程技术网

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})}噢,天哪。我怎么会忘了呢。非常感谢:)噢,天哪。我怎么会忘了呢。非常感谢:)