Estoy tratando de modificar este código para filtrar el contenido de una vista de lista.
export default class App extends React.Component { constructor(props) { super(props); this.list = [ {text: 'Hennessey Venom', id: 'list-01'}, {text: 'Bugatti Chiron', id: 'list-02'}, {text: 'Bugatti Veyron Super Sport', id: 'list-03'}, {text: 'SSC Ultimate Aero', id: 'list-04'}, {text: 'Koenigsegg CCR', id: 'list-05'}, {text: 'McLaren F1', id: 'list-06'}, ]; this.fields = {text: 'text', id: 'id'}; this.state = {listData: this.list}; } onKeyUp(e) { let value = e.target.value; const re = /^([\w\d]*)\s*(==|!=)\s*([\w\d]*)$/i; let matches = value.match(re); let data; if (matches) { let key = matches[1]; let op = matches[2]; let search_value = matches[3]; // doesn't return anything data = new DataManager(this.state.listData).executeLocal( new Query().search({searchKey: search_value, fieldNames: ['text'], operator: op}), ); // original example code, doesn't return anything when run in this branch, // despite working below in the other branch. // data = new DataManager(this.state.listData).executeLocal( // new Query().where('text', 'contains', value, true), // ); } else { // the original example, works as expected in this branch data = new DataManager(this.state.listData).executeLocal(new Query().where('text', 'contains', value, true)); } if (!value) { this.setState({ listData: this.list, }); } else { this.setState({ listData: data, }); } } render() { return ( <div id='sample'> <input className='e-input' type='text' id='textbox' placeholder='Filter' onKeyUp={this.onKeyUp.bind(this)} title='Type in a name' /> <ListViewComponent id='list' dataSource={this.state.listData} fields={this.fields} sortOrder='Ascending' /> </div> ); } } ReactDOM.render(<App />, document.getElementById('element')); Cuando usa la rama else, el código se ejecuta como se esperaba. Pero cuando ingreso text == bug , por ejemplo, en el cuadro, la rama superior se ejecuta, pero tanto la Query nueva como la Query original devuelven matrices vacías. No estoy seguro de por qué es así, incluso con la misma Query exacta que la rama else (que se muestra como comentada).
Sé que la expresión regular funciona correctamente, ya que registré los valores de clave, op y search_value y son correctos.