Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:“输入错误”;无法读取属性';toLowerCase';“未定义”的定义;尝试使用.filter()时_Javascript_Reactjs_Redux_Typeerror - Fatal编程技术网

Javascript TypeError:“输入错误”;无法读取属性';toLowerCase';“未定义”的定义;尝试使用.filter()时

Javascript TypeError:“输入错误”;无法读取属性';toLowerCase';“未定义”的定义;尝试使用.filter()时,javascript,reactjs,redux,typeerror,Javascript,Reactjs,Redux,Typeerror,所以,我一直在尝试解决这个错误,但我一直一无所获。我尝试用subreddit、key、link、type和body替换.filter()中的title,它们都可以正常工作,不会抛出错误,只有title会给出错误。在故障排除过程中,我还放置了console.log以查看是否实际存储了某些内容,并且它将标题打印到了控制台上,就像它应该打印的那样,但仍然保存了。title在.filter中仍然未定义。我还尝试了只保存.title.includes而不使用toLowerCase()的方法,但没有效果 有

所以,我一直在尝试解决这个错误,但我一直一无所获。我尝试用subreddit、key、link、type和body替换.filter()中的title,它们都可以正常工作,不会抛出错误,只有title会给出错误。在故障排除过程中,我还放置了console.log以查看是否实际存储了某些内容,并且它将标题打印到了控制台上,就像它应该打印的那样,但仍然保存了。title在.filter中仍然未定义。我还尝试了只保存.title.includes而不使用toLowerCase()的方法,但没有效果

有问题的代码

  renderPostTitles = () => {
    const importantValues = this.props.totalUserSaves.map((saved) => {
      return { 
        subreddit: saved.data.subreddit, 
        title: saved.data.title, 
        key: saved.data.id, 
        link: `https://www.reddit.com${saved.data.permalink}`,
        type: saved.kind,
        body: saved.data.body
      }
    })

    console.log(importantValues[0].title)
    const threadsArray_searched = importantValues.filter(saved => saved.title.toLowerCase().includes(this.props.searchQuery.toLowerCase()) )
更多组件:

import React from 'react';
import { connect } from 'react-redux';

class DisplaySaves extends React.Component {
  renderPostTitles = () => {
    const importantValues = this.props.totalUserSaves.map((saved) => {
      return { 
        subreddit: saved.data.subreddit, 
        title: saved.data.title, 
        key: saved.data.id, 
        link: `https://www.reddit.com${saved.data.permalink}`,
        type: saved.kind,
        body: saved.data.body
      }
    })

    const threadsArray_searched = importantValues.filter(saved => saved.title.toLowerCase().includes(this.props.searchQuery.toLowerCase()) )

    return threadsArray_searched.map((saved, i) => {
     return (
        <div key={saved.key}>
          <div> {i+1}. </div>
          <div> r/{saved.subreddit}: </div>
          <p> <a href={saved.link} target="_blank" rel="noopener noreferrer"> {saved.title} </a> </p>
        </div>
        )
    })
  }

  render () {
    return (
      <div>
        <div>{this.renderPostTitles()}</div>
      </div>
      ) 
  }
}

const mapStateToProps = state => {
  console.log(state)
  return { 
    totalUserSaves: state.userData.totalUserSaves,
    searchQuery: state.userData.searchQuery
   }
}

export default connect(mapStateToProps)(DisplaySaves);
从“React”导入React;
从'react redux'导入{connect};
类DisplayReact.Component{
renderPostTitles=()=>{
const importantValues=this.props.totalUserSaves.map((已保存)=>{
返回{
subreddit:saved.data.subreddit,
标题:saved.data.title,
键:saved.data.id,
链接:`https://www.reddit.com${saved.data.permalink}`,
类型:saved.kind,
body:saved.data.body
}
})
const threadsArray_searched=importantValues.filter(saved=>saved.title.toLowerCase()。包括(this.props.searchQuery.toLowerCase())
返回threadsArray\u searched.map((已保存,i)=>{
返回(
{i+1}。
r/{saved.subreddit}:

) }) } 渲染(){ 返回( {this.renderPostTitles()} ) } } 常量mapStateToProps=状态=>{ console.log(状态) 返回{ totalUserSaves:state.userData.totalUserSaves, searchQuery:state.userData.searchQuery } } 导出默认连接(MapStateTops)(显示保存);
确保在所有情况下标题都是字符串(未定义的标题可能在其中一个元素中偷偷出现),您可以使用默认或字符串构造函数:

return {
  title: saved.data.title || '', 


你确定这不是
this.props.searchQuery.toLowerCase()
让你悲伤吗?是的,我确定,因为正如我所说,我尝试了其他值来代替标题,没有问题。这意味着错误消失了,一切都按预期进行了。我会尝试一下。我不知道为什么它不是一个字符串,考虑到我从reddit获得的原始数据,它是一个字符串。
return {
  title: String(saved.data.title),