2016-02-07 36 views
1

我正在通过将我的文本转换为小写字母并将其索引与-1进行比较,以便为ReactJS中的特定字段设置一些值,但我在JavaScript控制台中收到此错误:ReactJS toLowerCase不是函数

Uncaught TypeError: props.filterText.toLowerCase is not a function

var props = this.props; 
var rows = this.props.episodes 
    .filter(function(episode){ 
     return episode.title.toLowerCase().indexOf(props.filterText.toLowerCase()) > -1; 
    }) 
    .map(function(episode){ 
     return <EpisodeRow key={episode.title} episode={episode}/> 
    }); 
+1

不props.filterText有什么价值? – nnnnnn

+0

'episode.title'是一个字符串吗?尝试将episode.title.toString()。toLowerCase()或console.log的值赋予控制台。 – Chris

+1

这是一个非常简单的错误 - 'props.filterText'不是一个字符串。只需在'props.filterText'的过滤器循环内执行一个'console.log',你就会发现它不是一个字符串。我的猜测是它将会是'undefined' – Adam

回答

3

看起来像克里斯的评论是正确的答案:

如果标题是一个字符串,使用的toString() toLowe前rCase():

return episode.title.toString().toLowerCase().indexOf(props.filterText.toString().toLowerCase()) > -1; 
+0

在我的特殊情况下,此解决方案将文本呈现为“[Object] [Object]”。用强类型语言进行编码时,您不应该猜测。 – HoldOffHunger

-1

我觉得从评论亚当的回答实际上是正确的,竟然解决我的问题:

.filter(function(episode){ 
    if(episode.title) { 
     return episode.title.toLowerCase().indexOf(props.filterText.toLowerCase()) > -1; 
    } else { 
     return ''; 
    } 
}) 
相关问题