2016-03-22 10 views
1

react-relay-routerを使用してReact RelayとGraphQLを学習しようとしていますが、自分のルートのパラメータを取得できません。私の難しさは "/ Maps /:userID"ルートです。react-router-relayで動作するuserIDルートパラメータを取得できません

は、ここに私のルータです:

ReactDOM.render(
 
    <RelayRouter history={browserHistory}> 
 
     <Route path="/" 
 
     component={HomeSubAppContainer} 
 
     renderLoading={() => <Spinner/>} 
 
     > 
 
     <IndexRoute component={WelcomePageContainer}/> 
 
     </Route> 
 
     <Route path="/Maps/:userID" 
 
     component={MapsSubAppContainer} 
 
     renderLoading={() => <Spinner/>} 
 
     queries={userRootQuery} 
 
     > 
 
     <IndexRoute 
 
      component={WeekMapContainer} 
 
      renderLoading={() => <Spinner/>} 
 
     /> 
 
     </Route> 
 
    </RelayRouter>, 
 
    document.getElementById('root') 
 
);

ここに私のリレーコンテナとルートクエリがあります:

export const MapsSubAppContainer = Relay.createContainer(MapsSubApp, { 
 
    fragments: { 
 
     user:() => Relay.QL 
 
     ` fragment on User { 
 
      birthDate 
 
     } 
 
     ` 
 
    } 
 
    }); 
 

 
    export const userRootQuery = { 
 
    user:() => Relay.QL 
 
    ` query { 
 
     user(userID: $userID) 
 
     } 
 
    ` 
 
    };

ここの場所です私のリアクションコンポーネントでは、routeIDにuserIDを挿入します。私はreact-routerからbrowserHistoryを使用しています。 "1"はテストユーザーIDです。

handleSubAppsNavClick(button) { 
 
    const path = button === 'Maps' ? '/Maps/1' : '/' + button; 
 
    browserHistory.push(path); 
 
}

ここに私のスキーマのルートクエリです:

var queryType = new GraphQLObjectType({ 
 
    name: 'Query', 
 
    fields:() => ({ 
 
     node: nodeField, 
 
     user: { 
 
     type: userType, 
 
     args: { 
 
      userID: {type: GraphQLString} 
 
     }, 
 
     resolve: (args) => getUser(args.userID) 
 
     } 
 
    }) 
 
    });

私が反応し-ルータリレーのGitHubページのコード例に従うことを試みたが、コンソールエラーが発生しました:

Warning: [react-router] Location "/Maps" did not match any routes

ご提案いただきありがとうございます。

答えて

1

あなたのコードには、経路が設定されていない/Mapsにナビゲートしようとするバグがあります。どのように移行しているかを再確認してください。

0

私はMapsSubAppコンポーネントのルートにuserIDを追加していましたが、ルータがMaps/userIDに行く前に以前のHomeSubAppコンポーネントでこれを実行していたはずです。

関連する問題