我的平面列表未呈现ExtraData
所以,这是我的渲染组件
<TextInput
style={textInput}
placeholder="Search Coin"
onChangeText={(text) => this.onSearch(text)} />
<FlatList
extraData={this.state.searchCoin}
data={this.state.searchCoin ? displaySearchCrypto : this.props.cryptoLoaded}
keyExtractor={item => item.short}
initialNumToRender={50}
windowSize={21}
removeClippedSubviews={true}
renderItem={({ item, index }) => (
<CoinCard
key = {index} />
//And more stuff
)} />
这里<TextInput
实际上是触发onSearch
功能的搜索框
onSearch = (text) => {
if (text == "") {
this.socket = openSocket('https://coincap.io');
this.setState({searchCoin: false})
displaySearchCrypto = []
} else if (!this.props.cryptoLoading) {
if (!this.state.searchCoin) {
this.setState({searchCoin: true})
}
this.socket.disconnect();
displaySearchCrypto = []
for (let i=0; i<this.props.cryptoLoaded.length; i++) {
let coinVal = this.props.cryptoLoaded[i]["long"] + this.props.cryptoLoaded[i]["short"]
if (coinVal.indexOf(text) > - 1) {
displaySearchCrypto.push({
no: {i},
key: this.props.cryptoLoaded[i]["long"],
//more stuff
})} } } }
我读过extraData
是为了在状态更改时重新呈现列表,因此我正在做类似extraData={this.state.searchCoin}
的事情
我的this.state.searchCoin
最初为假,每当用户输入文本时,它就从onSearch
变为true
,而当用户输入文本时,它就变为false
。
我想在状态为true时显示displaySearchCrypto
,但我的列表完全不变。
注意:我正在使用class cryptoTicker extends Component {
,而我已经尝试过extraData={this.state}
[问题:] ->我在做什么错了?