You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中keyword.toLowerCase不是函数错误的排查与修复

React Native搜索功能中keyword.toLowerCase is not a function错误解决

错误原因

问题根源在于TextInput的onChange回调参数不是输入的文本字符串,而是一个事件对象。你调用setKeyword(text)时,这里的text实际是Event实例,并非字符串,所以后续调用keyword.toLowerCase()时,事件对象没有这个方法,自然抛出错误。你之前尝试用ToString()无效,是因为转换的是事件对象,不是真正的输入文本。

修复方案

方案1:改用onChangeText(推荐)

React Native的TextInput提供了onChangeText回调,它会直接把输入的文本字符串作为参数传递,这是处理输入文本的标准方式:

修改TextInput部分代码:

<TextInput placeholder='Search'
    style={styles.searchbar}
    onChangeText={(text) => setKeyword(text)} // 替换onChange为onChangeText
/>

方案2:从Event对象提取文本(不推荐,繁琐)

如果坚持使用onChange,需要从事件对象中手动取出输入值:

<TextInput placeholder='Search'
    style={styles.searchbar}
    onChange={(event) => setKeyword(event.nativeEvent.text)}
/>

额外兜底处理(可选)

为避免其他意外情况导致keyword非字符串,可以在调用toLowerCase()前做类型校验兜底:

else if (
    chat.username.toLowerCase().includes(
        typeof keyword === 'string' ? keyword.toLowerCase() : ''
    )
)

修复后的核心代码片段

// ...
<TextInput placeholder='Search'
    style={styles.searchbar}
    onChangeText={(text) => setKeyword(text)}
/>
// ...
chats.filter((chat) => {
    if (!keyword) { // 空字符串时返回所有结果
        return true;
    }
    const lowerKeyword = keyword.toLowerCase();
    return chat.username.toLowerCase().includes(lowerKeyword);
})
// ...

内容的提问来源于stack exchange,提问作者user20731273

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:15:40