2016-07-11 2 views
0

https://github.com/facebook/relay/issues/1243과 같은 문제가 하나 더 시도됩니다. 그러나 이번에는 Relay 놀이터에서 재현 할 수있게 만들었습니다.Relay가 연결을 재귀 적으로 반입하는 것을 거부합니다. 릴레이 놀이터에서 재현

사용자가 상위 카테고리를 가리키면 데이터를 재귀 적으로 가져 오는 것이 좋습니다.

나는 두 개의 요점을 만들었습니다. 하나는 스키마이고 다른 하나는 앱입니다. 놀이터에 복사하여 붙여 넣기 만하면 catName2 위에 마우스를 올리면 오류가 발생합니다.

스키마 https://gist.github.com/GrigoryPtashko/d110b72076a4611657d5364109ba5905.

https://gist.github.com/GrigoryPtashko/c27d6421f1f02c78dc054b2874b4ac87입니다.

문제는 내부 조각이 포함되어 있고 데이터를 가져 오면 릴레이가 백엔드에서 되돌아 오는 데이터를 "거부"합니다.

첫 번째 문제를 작성할 때이 문제는 제 graphql 백엔드 (JS에없는 문제)라고 생각했습니다. 하지만 이제는 백엔드 없이도 재현 할 수있게되었습니다.

나에게 이것은 덜 버그라고 보입니다.

감사합니다.

PS 다음은 스키마와 당신이 만난 예외가 Cannot read property 'map' of undefinedrelay playgroud

답변

1

에 붙여 넣을 응용 프로그램입니다. 여기에 전달 된 categories 소품이 정의되지 않기 때문입니다 :

<CategoryItemSubcategoryListContainer 
    categories={this.props.category.categories} 
    key={this.props.category.id} 
/> 

문제는 당신이 categories 소품이 릴레이로 CategoryItem에 공급되는 데이터를 구체화 할 것으로 예상된다는 것입니다.

fragments: { 
    category: variables => Relay.QL` 
    fragment on Category { 
     id 
     name 
     ${CategoryItemSubcategoryListContainer 
     .getFragment('categories') 
     .if(variables.expanded) 
     } 
    } 
    `, 
}, 

...하지만 CategoryItem의 조각에서 살펴보면 당신은 categories은 아무데도 찾을 수 있음을 알 수있다. 그것은 CategoryItemSubcategoryListContainer.getFragment(…)을 통해 포함되었지만, CategoryItem이 그것을 명시 적으로 가져 오지 않았기 때문에 릴레이는 해당 데이터를 해당 소품에서 가려냅니다. CategoryItemSubcategoryListContainer

  • 이동 연결 호출에

    1. 패스 this.props.categorycategories(first: …)까지 여기 CategoryItem

    에 옵션 하나를 구현하는 작업 놀이터에 대한 링크입니다 :

    이 솔루션에 하나가 facebook.github.io/relay/prototyping/playground.html#source=...

  • +1

    마침내! 고맙습니다! 그것은 내가 기다리고 있었던 교훈이었다! – Grigory

    +0

    스티브, 당신이 내 다음 질문을 여기에서 볼 수 있을까요? http://stackoverflow.com/questions/38339060/how-to-get-data-from-the-local-graph? 고맙습니다. – Grigory