gpt4 book ai didi

javascript - 为什么我无法在 react native 搜索栏中输入内容?

转载 作者:行者123 更新时间:2023-12-01 00:25:08 27 4
gpt4 key购买 nike

当我输入时,搜索栏中没有显示任何内容,但它知道我正在输入(来自 updateSearch 函数中的打印语句)。根据我对react-native searchBar的理解,我什至不需要做任何事情就可以让文本显示在那里,所以我真的不知道我怎么能把它搞砸。这是一个更大项目的一部分..但我祈祷这个问题与它的其余部分没有任何关系。

import React, { Component } from "react";
import {
View,
Text,
FlatList,
ActivityIndicator,
SafeAreaView,
StyleSheet
} from "react-native";
import Header from "../components/Header";
import { SearchBar, List, ListItem } from 'react-native-elements';

export default class Search extends React.Component {

constructor(props) {
super(props);

this.state = {
query: "",
data: []
};

}

renderHeader = () => {
return (
<SearchBar
placeholder="Type Here..."
onChangeText={this.updateSearch}
value={this.state.query}
lightTheme={true}
/>
);
}

updateSearch = text => {
console.log("text", text);
const formattedSearch = text.toLowerCase();
this.setState({ query: formattedSearch });
console.log("text", this.state.query);
};

render() {
return (
<SafeAreaView style={styles.container}>
<Header text={"Search"} />
<FlatList
ListHeaderComponent={this.renderHeader}
/>
</SafeAreaView>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
paddingTop: Expo.Constants.statusBarHeight
}
});

最佳答案

如果你想用渲染更新你的 UI,你必须更新你的状态。在 FlatList 组件中,您不更新状态。所以它永远不会再次渲染。您必须在 FlatList 中使用状态。

render() {
return (
<SafeAreaView style={styles.container}>
<Header text={"Search"} />
<FlatList
ListHeaderComponent={this.renderHeader}
AnyProp={this.state.anyState}
/>
</SafeAreaView>
);
}

关于javascript - 为什么我无法在 react native 搜索栏中输入内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59077876/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com