单击按钮后,我需要添加“活动”类,并删除所有其他“活动”类。
请在这里查看:https : //codepen.io/azat- io/pen/RWjyZX
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);
我如何在这里做得更好?
很简单。看看这个
https://codepen.io/anon/pen/mepogj?editors=001
基本上,您想处理组件的状态,因此您要检查当前处于活动状态的组件。您将需要包括
getInitialState: function(){} //and isActive: function(){}
在链接上查看代码