当前位置: 首页 > 知识库问答 >
问题:

TypeError:无法读取未定义的属性“map”-React

林正平
2023-03-14
class Wrapped extends React.Component {
    constructor(props){
    super(props)
    this.state = {
        results: []
    }
    
    this.search = this.search.bind(this)
  }
  search(results){
    this.setState({results})
  }
    render(){
    const { results } = this.state
    return (
        <div>
          <Search onSearch={this.search} />
        <Result {...this.state} />
        </div>
    )
  }
}

class Search extends React.Component {
    constructor(props){
    super(props);
    this.state = {
        searchValue: ''
    }
    this.handleOnChange = this.handleOnChange.bind(this);
  }
  
  handleOnChange(e){
    this.setState({
        [e.target.name]: e.target.value
    }, () => {
        setTimeout(() => {
        // it can be the result from your API i just harcoded it
        const results = ['hello', 'world', 'from', 'SO'].filter(value => value === this.state.searchValue)
        this.props.onSearch(results)
      }, 1000)
    })  
  }
  
    render(){
    return (
        <div>
          Search: <input name="searchValue" type="text" onChange={this.handleOnChange} />
        </div>
    )
  }
}

const Result = ({results}) => {
    return (
  <ul>
    {results.map(result => <li key={result}>{result}</li>)}
  </ul>
  )
}

ReactDOM.render(
  <Wrapped/>,
  document.getElementById('container')
);

共有1个答案

姬和豫
2023-03-14

我检查了您的代码,在wrappd.js中发现了以下错误:

<Results {...results} />

因为results声明如下:

const [results, setResults] = useState([]);

{...results}会以不好的方式将内容数组扩展到属性中,我建议您在这里阅读扩展操作符

<Results results={results} />
...
const resultsProps = {
    results,
  }
...
  return (
    <>
      <SearchComp onSearch={search} />
      <Results {...resultsProps} />
    </>
  );
...
 类似资料:
  • 我目前使用两个组件,并在这两个组件上实现了react Route。但是当我单击父组件viewall.js时,我无法从我的模拟json服务器api中获取值,这个错误显示: viewall.js

  • 如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')

  • 由于某些原因,JSON的响应映射不正确,这里是我的HTML。配置文件-search.component.html 下面是html从中提取的组件。配置文件-search.component.ts http-error-handler.service.ts:33类型错误:无法读取MapSubscriber.Project(profile-search.service.ts:49)在MapSubscri

  • 问题内容: 我试图在ajax回调从REST api接收数据后设置组件的setState。这是我的组件构造函数代码 然后,我有一个如下所示的方法。 现在,这是我执行getAJAX请求的getPosts函数。 我想设置状态,但出现以下错误。 不太清楚是什么原因造成的。如果有人指出我正确的方向,那将真的很有帮助。提前致谢。 问题答案: 还绑定回调函数,以便回调内部指向React Component的上下

  • 我试图使用node.js express web服务器中的@tensorflow/tfjs-node模块。但是,我得到了下面的错误。我不明白为什么我会出现这个错误。我刚刚在node.js服务器中添加了1行代码。我使用“npm install@tensorflow/tfjs-node”完成的安装。可能的问题是什么? null 先谢谢你, var nonMaxSuppressionV3Impl=tf.

  • 我正在尝试联系许多对许多,在两个模式“培训和培训课程”,所以我做了第三个模式“课程”,以尝试关系1对许多。但是我得到了一个错误: null TypeError:无法读取对象上未定义得属性“belongsto”。(c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppDatabaseDat