2016-10-10 1 views
0

Я использую ReactJS, Relay Framework и GrapthQL. Это компонент, макет, в котором я использую реле, чтобы получить данные:RelayContainer: `Relay` был обработан с недопустимым контекстом ретрансляции` undefined`

import React, { PropTypes } from 'react'; 
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; 

import Header from '../Header'; 
import Footer from '../Footer'; 
import Sidebar from '../Sidebar'; 
import Relay from 'react-relay'; 

import injectTapEventPlugin from 'react-tap-event-plugin'; 
injectTapEventPlugin(); 

class Layout extends React.Component{ 
    render(){ 
     const {children} = this.props; 
     var communityList = this.props.communityList; 
     return (
      <MuiThemeProvider> 
       <div> 
        <Header/> 
        <Sidebar/> 
        {React.Children.only(children)} 
        <Footer /> 
       </div> 
      </MuiThemeProvider> 
     ) 
    } 
} 

Layout.propTypes = { 
    children: PropTypes.element.isRequired, 
}; 

var RelayLayout = Relay.createContainer(Layout, { 
    fragments: { 
     communityList:() => Relay.QL` 
     fragment on Layout { 
    user(id: 11) { 
     connections{ 
      community{ 
      name 
      } 
     } 
    } 
    } 
    `, 
    }, 
}); 


export default RelayLayout; 

Проблема: когда я запустить страницу, она появляется сообщение об ошибке:

Инвариантная Нарушение RelayContainer: Relay(Layout) было вынесено с неверным контекстом реле undefined. Удостоверьтесь, что свойство relay на Контекст React соответствует интерфейсу RelayEnvironment.

Запрос с использованием GrapthQL возвращают действительные данные, поэтому я не думаю, что проблема является запрос

ответ

1

У меня была такая же проблема, когда я бегу моих тестов. Вам необходимо обернуть контейнер Relay компонентом Relay.RootContainer или Relay.Renderer. Пример:

const ViewerQuery = { viewer:() => Relay.QL`query { viewer }` }; 

const queryConfig = { 
    queries: ViewerQuery, 
    params: {}, 
    name: 'User' 
}; 

<Relay.Renderer 
    Container={User} 
    queryConfig={ViewerQuery} 
    environment={Relay.Store} 
    render={({done, error, props, retry, stale}) => {}} /> 
Смежные вопросы