2016-06-03 6 views
0

여기 내가 잘못하고있는 것을 이해하지 못합니다. 내 앱에 Immutable.js & React을 사용하고 있습니다. 나는 Immutable.js의 filter 함수를 호출하여 if 조건 & 반환 구성 요소 배열을 기반으로 컬렉션을 구체화합니다.필터 함수를 사용하여 반응 구성 요소 반환 - 코드 검토

사실은 React 구성 요소 컬렉션 대신 'svgTemplateState'를 반환합니다.

 let getUpdatedTem = (renderType, svgTemplateState) => { 
      switch(renderType){ 
      case("Template Selection"): 
       return(svgTemplateState.filter((templateType) => { 
        if(templateType.get("templateNo") > -1){ 
         let temType = templateType.get("type"); 
         return(
          <TemplatePath 
          temData = { templateType } 
          key = { temType } /> 
         ); 
        } 
       })); 
      case("Preview"): 
... 
+0

일반적으로 술어 –

+0

과 일치하는 모든 요소의 다른 목록을 갖도록 목록을 필터링합니다. 반환되는 목록은 'TemplatePath' 배열을 반환 할 때'svgTemplateState '배열과 같습니다. – Kayote

답변

3

변경 불가능한 필터는 서식 파일을 반환 할 컬렉션에 포함할지 여부를 나타내는 부울을 반환해야합니다. 귀하의 경우 React 구성 요소를 반환합니다.

당신은지도 인 것처럼 보이는 svgTemplateState을 반복하고 있습니다 (그것이 무엇인지는 분명하지 않습니다). 반복해야하는 것은 템플릿 모음이며 컬렉션 내의 각 템플릿에있는 템플릿 번호를 확인하십시오.

let newCollection = templatesCollection.filter(template => return template.get("id") > -1); 
+1

당신은 틀린 품목입니다. 나는 그 부울 반환을 알지 못했다. 고마워,이 문제를 즉시 해결. – Kayote

0

조건과 일치하는 항목을 찾으십니까? 처럼 . findEntry()? svgTemplateState 가정

+0

그러면 구성 요소를 찾았습니까? –

+0

도움과 노력을 해주신 Michael에게 감사의 말씀을 전합니다. 김 감사관은이 문제를 해결했다. 도움에 다시 한번 감사드립니다. – Kayote

0
  return(svgTemplateState.filter((templateType) => { 
       if(templateType.get("templateNo") > -1){ 
        let temType = templateType.get("type"); 
        return(
         <TemplatePath 
         temData = { templateType } 
         key = { temType } /> 
        ); 
       } 
      })); 

배열 "지도"와 위의 코드에서 "필터"방법을 대체 할 것이다. svgTemplateState가 쌍을 가진 객체 인 경우 for ... in을 사용하여 svgTemplateState를 반복하고 조건을 확인한 다음 루프 이후에 반환 할 수있는 임시 객체로 구성 요소를 푸시합니다.