0

構造は

store: (Component) => Relay.QL`
  query StoreQuery {
    store { ${Component.getFragment('store')} },
  }
`,

store: () => Relay.QL`
  fragment on Store {
    activities {
      ${Activity.getFragment('activity')}
    },
  }
`,

activity: () => Relay.QL`
  fragment on Activity {
    name,
    icon,
    color
  }
`,

props.activities をリストとして取得していて、このリストを操作したい (たとえば、並べ替えや不要な削除など)。しかし、そこにリレー オブジェクトが表示され、コンポーネントに設定する前にデータを取得して変更する方法がわかりません。

4

1 に答える 1

1

リレーから各コンポーネントに渡されるデータはマスクされているため、別のコンポーネントがたまたまリクエストしてもアクセスできません。フィールドにアクセスするには、それを要求する必要があります。

たとえば、外部コンポーネントがフィールドに基づいてアクティビティを並べ替えたいとしnameます。そのコンポーネントでも名前を明示的に要求するには、フラグメントを更新する必要があります。

fragment on Store {
  activities {
    name
    ${Activity.getFragment('activity')}
  },
}

利点は、name何らかの理由で内側のフラグメントがフィールドを削除した場合でも、外側のコンポーネントにデータが残っていることです。これは、完全なアプリケーションについて知らなくても、ローカルでコンポーネントについて推論できるようにするための重要な動作です。

于 2015-11-02T23:15:33.517 に答える