2016-06-15 2 views
0

У меня есть страница, на которой будет отображаться другой компонент, основанный на том, если пользователь выполнил вход или выход.Компонент Meteor React, не обновляющийся при выходе из системы

В рендер области у меня есть:

var layout; 
if (Meteor.userId()) { 
    layout = <BoxSignedIn />; 
} else { 
    layout = <BoxSignedOut />; 
} 

return (

      layout        
     ) 
    } 

Теперь это будет работать, если я подпишу, и обновить приложение, но не будет работать, если я просто выйти и не обновляют.

Вот код для подписанных в компоненте:

импорта React из 'реагировать'; Импорт ReactDOM из «реагирования»;

export default class BoxSignedIn extends React.Component{ 

constructor(){ 
super(); 
} 

render(){ 
return ( 
        <div>signed in </div> 

     ) 
} 
} 
+0

Просьба отформатировать код при публикации в StackOverflow. Это помогает нам быстрее понимать ваши вопросы. – aedm

ответ

4

Это потому, что React только обновляет компонент, когда его состояние или реквизита изменения, но Meteor.userId() является ни один из них. Вам нужно будет использовать createComponent, чтобы превратить Meteor.userId() в собственность React.

import React from 'react'; 
import { Meteor } from 'meteor/meteor'; 
import { createContainer } from 'meteor/react-meteor-data'; 

class MyComponent extends React.Component { 
    render() { 
    return this.props.userId ? <BoxSignedIn /> : <BoxSignedOut />; 
    } 
} 

export default createContainer(() => { 
    return { 
    userId: Meteor.userId() 
    }; 
}, MyComponent); 
+0

спасибо! Некоторое время я застрял на этом – paul

Смежные вопросы