2016-03-22 1 views
1

Я пытаюсь изучить React Relay и GraphQL с помощью реле-ретранслятора, но не могу получить параметры на моих маршрутах для работы. Моя проблема связана с маршрутом «/ Maps /: userID».Не могу получить параметр маршрута 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) 
 
     } 
 
    ` 
 
    };

Вот место в моем компоненте, где я вставляю идентификатор пользователя в параметр маршрута. Я использую browserHistory от реактивного маршрутизатора. «1» - это мой тестовый идентификатор пользователя.

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, но должен был сделать это в предыдущем компоненте HomeSubApp до того, как маршрутизатор перейдет к Maps/userID.