2016-07-12 3 views
0

계층 적 데이터를 표시하는 구성 요소가 있습니다. 재귀 적 데이터 구조 인 계층 적 분류 자입니다. 분류 기준의 각 카테고리는 하위 카테고리 등으로 구성됩니다.로컬 그래프에서 데이터를 가져 오는 방법은 무엇입니까?

는 여기에 대해 놀이터입니다 :

Relay playground

나는 제 3 자 HTML 양식에서이 분류를 보여주는 구성 요소를 가지고있다. 카테고리를 선택하는 데 사용됩니다.

어떤 시점에서 사용자는이 재귀 분류 프로그램에서 카테고리를 선택할 것이므로 현재 레벨로 이어진 데이터의 전체 경로를 얻어야합니다. 나는 내가 얻을 수있는 방법을 레벨 2에서 구성 요소 내부 따기의 이벤트를 잡을 때 그래서

[root cat id, root cat name], 
[level 1 cat id, level 1 cat name], 
[level 2 cat id, level 2 cat name] 

: 사용자가 계층 구조의 레벨 3에서 카테고리를 선택합니다 있다면, 나는 이러한 데이터를 다시 부여해야 의미 루트 카테고리에서 전체 경로 Relay 저장소 (로컬 그래프에서)?

답변

1

이것은 릴레이 중 하나가 아닌 React 솔루션입니다. 트리에서 주어진 노드의 경로에 액세스하는 방법은 무엇입니까? 경로를 합성하여 구성 요소에 전달합니다.

const path = [ 
    // The elements of the passed-in path. 
    ...this.props.path, 
    // A new path element using the details from this level. 
    [this.props.catId, this.props.catName], 
]; 
<MyNode path={path} onClick={() => alert(path)} /> 

working example을 보려면 여기를 클릭하십시오.

+0

감사합니다. 귀하의 답변은 최고입니다! 로컬 캐시에서 데이터를 가져 오는 기본 방법이 당신이 말하는 것과 같다고 나는 맞습니까? 즉, Relay는 로컬 그래프를 검사하기위한 공개 API를 공개하지 않으며 항상 소품과 합성 된 데이터 구조를 사용하는 것이 더 낫다는 뜻입니까? – Grigory

+1

일반적으로 데이터는 위에서 아래로 흐릅니다. 당신은 당신의 부모에 대해 아무것도 배우기 위해 하위 컴포넌트의 그래프를 크롤링해서는 안됩니다. 스키마에서'path' 필드를 드러내고'resolve()'메소드에서 경로를 구축 할 수있는 또 다른 구현이 있습니다. 물론 이것은 네트워크 응답의 크기를 팽창시킬 것이므로 기존 솔루션이 최고 일 수 있습니다. – steveluscher