React native.-使用setState不会更改textInput中的props

时间:2017-05-18 23:16:06

标签: reactjs react-native

我尝试使用文字输入来过滤ViewList,但似乎是因为' text'的初始状态。 "",它总是以某种方式循环,它返回到""删除所有类型

过滤功能



filterSearch (texto) {

  const newData = this.Data.filter((item) => {
    const itemData = item.nombre.toUpperCase()
    const textData = this.texto.toUpperCase()
    return itemData.indexOf(textData) > -1
  })

  this.setState({
    dataSource: this.state.dataSource.cloneWithRows(newData),
    text: texto 
  })
}




并从textInput

调用



<TextInput 
  style={styles.busqueda}
  placeholder= 'Buscar'
  onChangeText={(text) => this.filterSearch.bind(text)}
  value={this.state.text}
>
</TextInput>
&#13;
&#13;
&#13;

似乎filterSearch不是正确的方式......

2 个答案:

答案 0 :(得分:0)

onChangeText={(text) => this.filterSearch(text)}

onChangeText={this.filterSearch.bind(this)}

答案 1 :(得分:0)

您需要进行2项更改:

1 / 使用正确的语法执行您的功能

onChangeText={(text) => this.filterSearch(text)}

实际上,onChangeText函数已经与组件词汇绑定(使用() => {}

2 / 您还需要将filterSearch函数绑定到react组件,然后您可以在其中使用this(通过以下任一方式):

a)使用词汇绑定:

filterSearch = (texto) => {
  //...
}

b)在构造函数中绑定函数:

constructor(props) {
  super(props);
  // ...
  this.filterSearch = this.filterSearch.bind(this);
}