2016-02-03 24 views
0

我有反应成分,如:反应从一个数组渲染值给出错误

class UserList extends Component { 
     render() { 
     const {users} = this.props 
     users.forEach(function(user){ 
      console.log(user.name) 
      if(user.photos){ 
       console.log(user.photos.data[0].source) 
       return (
        <div> 
         <p>{user.name}</p> 
        </div> 
       ) 
      } 
     }) 
     } 
    } 

    export default UserList 

但它给我错误说should return valid react component but returned array or undefined ..

返回函数返回的组件吗?

我在这里错过了什么?

回答

2

由于错误状态,您需要返回有效的React元素。

解决的办法是从您的render,例如div返回一个DOM节点。

class UserList extends Component { 
    render() { 
     return <div></div>; 
    } 
} 

进一步使用.forEach不会返回一个有效的做出反应元素到div,使用.map而不是产生渲染的数组。

class UserList extends Component { 
    render() { 
     return <div>{ 
      this.props.users 
       .filter(user => user.photos) 
       .map((user) => { 
        return <li>{ user.name }</li>; 
      }} 
     </div>; 
    } 
} 
+0

如何检查是否有用户照片。如果它有那么只有我要回.. – gamer

+0

的'.filter'将采取照顾。 –

+0

如果没有照片,我不想显示名称..也''照片'包含'图像'像'照片[0]照片[1]'那么如何显示它们的名称? – gamer