2017-03-27 6 views
-1

반응 프레임 워크에 새로운 기능이 추가되었습니다. 나는 문제에 직면하고 있으며 도움이 필요하다.React/JSX - 객체에지도 속성이 없습니다.

API 호출로 인해 여러 개체 행이있는 개체가 생성됩니다. 해당 개체에 대한 맵을 사용하여 div를 렌더링하고 싶습니다.

export default class SearchResult extends Component { 

    static propTypes = { 
     courses:React.PropTypes.object, 
    } 

    render() { 

    .... 
    this.props.courses.map(entity => renderEntity(entity)); 
    ... 
    } 
} 

지도가 재산이 아닙니다. 오류가 나타납니다. Google에서 검색 한 후 객체에지도 속성이 없다는 것을 알았습니다. 배열에만 있습니다.

어떤 사람이 나를 도와 줄 수 있습니까 1) 어떻게지도 기능/동등 물을 얻을 수 있습니까? 내가하고 싶은 것은 객체의 모든 요소에 대해 일련의 html 태그를 렌더링하는 것입니다. 이것은 검색 결과를 개발하는 것입니다. 2) 개체를 배열로 변환 할 수 있습니까? 그게 필요합니다. 3) (this.props.courses)가 proto이 초기화되어 있기 때문에 항상 true로 밝혀졌습니다. 이 경우 과정에 실제로 데이터가 있는지 확인하는 방법은 무엇입니까? courses.length 등 didnt는 길이의 속성을 가지고 있지 않으며 배열도 아닙니다.

Object console log output 참고 : - 이것은 내 첫 번째 질문은 stackoverflow입니다. 오류를 발견하면 친절하게 무시하십시오.

미리 도움을 청하십시오.

Object.prototype.map = function map(iter) { 
    var ret = {}; 

    for (var prop in this) { 
    ret[prop] = iter(this[prop], prop, this); 
    } 

    return ret; 
}; 

그런 다음

courses.map((value, propName, courses) => { 
    /* return some modified form of `value` */ 
}); 

처럼 호출 할 수 있습니다 그것은 매핑의 얕은 복사 본인 새 개체를 반환 한 : Sesh

+2

Object.keys (this.props.course) .map을 사용하여이 방법으로 렌더링 할 수 있습니다. – Geeky

답변

0

React 개 이상이 문제는 순수한 JS입니다. 당신의 필요가 개체의 값을 통해 순환 경우,이 같은 일이 잘 작동합니다 :

Object.keys(this.props.courses).map(course => renderEntity(this.props.courses[course])) 

이 같은 미래 문제에 대한 제안 바와 같이, 항상이 특정한 경우 this에, here을 찾기 시작이다 당신의 문제에 이상적입니다.

0

정말 해키 제안은 다음이 될 것입니다 속성. 또한 객체의 반복 가능 속성 만 매핑합니다.

분명히하기 위해, 프로덕션 코드에서 이것을 사용하라는 제안은 아닙니다. 특정 사례에 적합한보다 관리가 용이 ​​한 솔루션을 찾을 때까지는 일시적으로 작동해야합니다.