ES6数组映射不会返回任何内容:ReactJS

时间:2017-08-14 08:26:13

标签: javascript reactjs ecmascript-6

我有一个数组,我有一个简单的字符串值。我想映射我的数组,因为我试图找到我的字符串值。

我有这样的代码,但是map函数没有返回任何内容:/

class Application extends React.Component {
  constructor(){
    super();

    this.state = {
      questionAnswer: 'is that possible',
      question: ['is', 'possible', 'that']
    }  
  }

  renderKeywords() {
    this.state.question.map((item, key) => {
      return (
        <span>{item}</span>
      );
    }); 
  }

  render() {
    return (
      <div>
        <div>blabla</div>
        {this.renderKeywords()}  
      </div>
   );
 }
}
React.render(<Application />, document.getElementById('app'));

2 个答案:

答案 0 :(得分:13)

因为您没有从renderKeywords方法返回任何内容,所以您只从地图正文返回。如果你没有从函数返回任何东西,那么默认它会返回undefined,你需要返回map的结果(元素数组)。

像这样:

renderKeywords() {
    return this.state.question.map((item, key) => {   //here
        return (
            <span key={key}> {item} </span>
        );
    }); 
}

简而言之,你可以这样写:

renderKeywords() {
   return this.state.question.map((item, key) => <span key={key}> {item} </span> ); 
}

建议:

为每个元素指定唯一的 key

检查此答案以获取有关密钥的更多详细信息:Understanding unique keys for array children in React.js

答案 1 :(得分:0)

你应该返回map函数本身,你也可以使用es6单行箭头函数来实现它

class Application extends React.Component {
  constructor(){
    super();

    this.state = {
      questionAnswer: 'is that possible',
      question: ['is', 'possible', 'that']
    }  
  }

  renderKeywords() {
    return this.state.question.map((item, i) =><span key={i}>{item}
   </span>}); 
  }

  render() {
    return (
      <div>
        <div>blabla</div>
        {this.renderKeywords()}  
      </div>
   );
 }
}
React.render(<Application />, document.getElementById('app'));