我有5个不同的按钮,我想做的是当单击某个按钮时,例如按钮1
,然后状态一
将返回true
,然而按钮二、三、四和五
将返回false
。我想要实现的是在单击某个按钮时替换按钮的className。
现在在我的代码中,当单击button时,我传递的值将setState设置为true。然后将筛选数据数组并将返回设置为false。
import React from 'react'
var data = ["One", "Two", "three", "four", "five"]
export default React.createClass({
getInitialState(){
return{
one: false,
two: false,
three: false,
four: false,
five: false
}
},
onButtonClick(name){
var filter = data.filter((item) => {return item != name})
var obj = {}
obj[name] = true
this.setState(obj)
console.log(filter)
// can I setState the unclicked buttons from var filter?
},
render(){
return(
<div>
<button id="one" onClick={this.onButtonClick.bind(this, "one")} className={!this.state.one ? "btn btn-block btn-default" : "btn btn-block btn-info"}>one</button>
<button id="two" onClick={this.onButtonClick.bind(this, "two")} className={!this.state.two ? "btn btn-block btn-default" : "btn btn-block btn-info"}>two</button>
<button id="three" onClick={this.onButtonClick.bind(this, "three")} className={!this.state.three ? "btn btn-block btn-default" : "btn btn-block btn-info"}>three</button>
<button id="four" onClick={this.onButtonClick.bind(this, "four")} className={!this.state.four ? "btn btn-block btn-default" : "btn btn-block btn-info"}>four</button>
<button id="five" onClick={this.onButtonClick.bind(this, "five")} className={!this.state.five ? "btn btn-block btn-default" : "btn btn-block btn-info"}>five</button>
</div>
)
}
})
谢谢:D
与其使用5个状态,不如只使用一个,如果状态就应用样式。您还可以根据您的数据变量使用map以编程方式进行。请参见下面的工作示例:
var data = ["one", "two", "three", "four", "five"]
var MyKlass = React.createClass({
getInitialState(){
return{
activeButton: ''
}
},
onButtonClick(name){
this.setState({
activeButton: name
})
},
render(){
console.log(this.state.activeButton)
const buttons = data.map(d =>
<button id={d} onClick={this.onButtonClick.bind(this, d)} className={this.state.activeButton === d ? "btn btn-block btn-default" : "btn btn-block btn-info"}>{d}</button>
)
return(
<div>
{buttons}
</div>
)
}
});
ReactDOM.render(<MyKlass />, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
这是我在这里的第一篇帖子,而且我是一个初学者,所以请耐心听我说。 我想完成的是创建一个AJAX函数,该函数将以复选框的形式列出所有可用类别,用户可以从中选择。选择并点击“应用”后,我想显示分配给所选类别的帖子中所有标签的列表(也以复选框的形式)。然后用户可以从可用的标签中进行选择,然后在点击最后的“应用”按钮后,将显示相应的帖子。 类似于TED. com的“你感兴趣的是什么?”但是在AJAX中。所
问题内容: 我将如何创建一个按值过滤二维数组的函数? 给定以下数组: 我将如何过滤数组以仅显示键中包含特定值的那些数组?例如。 结果输出为: 编辑 我忘了提及搜索值应该是可互换的-即或。 问题答案: 将PHP的array_filter)函数与回调一起使用。 编辑:如果需要可互换,则可以稍微修改代码:
问题内容: 我有一系列元素。我还有一个IndexSet,它指定需要将数组的哪些索引提取到新数组中。例如: 我正在寻找使用swift 函数的方法,但是还没有答案。我怎样才能做到这一点? 问题答案: 是递增整数的集合,因此可以 将 每个索引 映射 到相应的数组元素: 假定所有索引对于给定数组均有效。如果不能保证,则可以过滤索引(如@dfri正确标记):
如何通过子数组值筛选数组?在这个例子中,我有下面的API请求数组,并且希望只构建一个id为2的新数组,该数组具有name=Other name,因为我的过滤器被设置为Other name 是否有方法执行并填充新数组?
问题内容: 如何过滤Java中的数组? 我有一系列对象,例如汽车: 类: 用: 现在我要过滤汽车阵列,只保留4门或更多: 我应该怎么做? 在使用Vector之前,请执行以下操作: 然后,我将使用Vector的大小创建一个新数组。然后,我将再次遍历向量并填充新数组。我知道这对于简单的事情来说是一个非常大的过程。 我正在使用J2ME。 问题答案: 编辑: 看到ArrayList不在J2ME中,但是基于
我已经设法编写了一个使用Java8Streams API的解决方案,该解决方案首先按对象路由的值对其列表进行分组,然后对每组中的对象数进行计数。它返回映射路由->long。代码如下: 和路由类: 应转换为: 请注意,映射的键数为2条路由,它是lastUpdated值最大的一条。