首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextInput组件

TextInput组件
EN

Stack Overflow用户
提问于 2022-06-02 08:19:08
回答 2查看 43关注 0票数 0

在这里输入图像描述

https://i.stack.imgur.com/AEGy7.png --我有一个TextInput组件--如何编写内容,它表示输入F时作为图像突出显示的下一个单词,并自动将b.com加黑

EN

回答 2

Stack Overflow用户

发布于 2022-06-02 09:57:24

您可以有一个包含应用程序中常用关键字的列表,如下所示:

代码语言:javascript
复制
[
   {
       "id": 1,
       "name": "chicken",
   }
   {
       "id": 2,
       "name": "banana",
   }
]

请注意,理想情况下,您将从API获取这些数据,而不是自己手动添加数据。然后,创建一个简单的搜索栏,并使用useState声明一个新变量:

代码语言:javascript
复制
const [filter, setFilter] = useState([])

...

<TextInput style={styles.textinput} placeholder='Search food...' onChangeText={handleChange}/>

handleChange函数负责设置新的数据过滤器:

代码语言:javascript
复制
const handleChange = (e) => {

        const currentFilter = data.filter((item) => {

            return item.name.toLowerCase().includes(e.toLowerCase())
        })

        setFilter(currentFilter)
    }

要显示所需的数据,可以使用条件渲染。只需在要显示数据的视图中插入以下代码段:

代码语言:javascript
复制
{

                filter.length != 0 && (

                    <View>

                        {
                            filter.map((item, key) => {
                                return <Text key={item.id} style={styles.textstyle}>{item.name}</Text>
                            })
                        }

                    </View>
                )

            }

以下是完整的代码:

代码语言:javascript
复制
export default function FilteringTest() {

    const [filter, setFilter] = useState([])

    const handleChange = (e) => {

        const currentFilter = data.filter((item) => {

            return item.name.toLowerCase().includes(e.toLowerCase())
        })

        setFilter(currentFilter)
    }

    return (

        <View style={styles.background}>

            <TextInput style={styles.textinput} placeholder='Search food...' onChangeText={handleChange} />

            {

                filter.length != 0 && (

                    <View>

                        {
                            filter.map((item, key) => {
                                return <Text key={item.id} style={styles.textstyle}>{item.name}</Text>
                            })
                        }

                    </View>
                )

            }

        </View>
    )
}

至于突出显示这些值,您只需在searchBar上创建一个包含最接近匹配的新文本。我建议您阅读这篇关于react本机数据过滤的文章:https://www.freecodecamp.org/news/how-to-make-a-filter-component-in-react/

票数 0
EN

Stack Overflow用户

发布于 2022-06-02 15:03:33

TextInput for IOS - https://snack.expo.dev/JrWw1Zj5Z

TextInput for android - https://snack.expo.dev/piRXBQv6aM

要获得更好的视图,可以禁用TextInput上的边框或使TextInput透明,并将边框和其他样式设置为文本组件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72472942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档