Bu oldukça basit soruyla bana yardımcı olabilir misiniz? Düğmeye tıkladıktan sonra diğer tüm "etkin" sınıfları kaldırdıktan sonra "etkin" sınıfına ihtiyacım var. BuradaReact.js ile bir sınıf nasıl eklenir?
Bak edin: http://goo.gl/duLPlG
var Tags = React.createClass({
setFilter: function(filter) {
this.props.onChangeFilter(filter);
},
render: function() {
return <div className="tags">
<button className="btn active" onClick={this.setFilter.bind(this, '')}>All</button>
<button className="btn" onClick={this.setFilter.bind(this, 'male')}>male</button>
<button className="btn" onClick={this.setFilter.bind(this, 'female')}>female</button>
<button className="btn" onClick={this.setFilter.bind(this, 'child')}>child</button>
<button className="btn" onClick={this.setFilter.bind(this, 'blonde')}>blonde</button>
</div>
}
});
var Kid = React.createClass({
render: function() {
return <ul>
<li>{this.props.name}</li>
</ul>
}
});
var List = React.createClass({
getInitialState: function() {
return {
filter: ''
};
},
changeFilter: function(filter) {
this.setState({
filter: filter
});
},
render: function() {
var list = this.props.Data;
if (this.state.filter !== '') {
list = list.filter((i)=> i.tags.indexOf(this.state.filter) !== -1);
console.log(list);
}
list = list.map(function(Props){
return <Kid {...Props} />
});
return <div>
<h2>Kids Finder</h2>
<Tags onChangeFilter={this.changeFilter}/>
{list}
</div>
}
});
var options = {
Data: [{
name: 'Eric Cartman',
tags: ['male', 'child']
},{
name: 'Wendy Testaburger',
tags: ['female', 'child']
},{
name: 'Randy Marsh',
tags: ['male']
},{
name: 'Butters Stotch',
tags: ['male', 'blonde', 'child']
},{
name: 'Bebe Stevens',
tags: ['female', 'blonde', 'child']
}]
};
var element = React.createElement(List, options);
React.render(element, document.body);
Nasıl daha iyi burada yapabilirim?
"Etiketler" bileşeninizin altında bir grup bağlantı oluşturmaya çalışmak yerine "düğme" bileşeni oluşturmanızı öneririm. Ardından, her düğme için koşullu olarak className özniteliğine koşullu olarak ayarlayabilirsiniz. Bu yardımcı olabilir: https://github.com/JedWatson/classnames –
@JohnGibbons, Başka bir yardımcı program eklemek istemiyorum. Bence basit bir şey. Codepen projesini ile güncelleyin. –
Bileşenin durumunda hangi düğmeye tıklandığını unutmayın. –