2016-06-15 24 views
0

我有一個頁面,它將顯示基於用戶是否登錄或註銷的不同組件。流星React組件在註銷時沒有更新

在Render區域我:

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

return (

      layout        
     ) 
    } 

現在,如果我登出並刷新應用程序,但如果我只是退出,不要刷新將無法正常工作這並不工作。

下面是在組分簽署的代碼:

進口從陣營「反應」; 從'react-dom'導入ReactDOM;

export default class BoxSignedIn extends React.Component{ 

constructor(){ 
super(); 
} 

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

     ) 
} 
} 
+0

請在發佈到StackOverflow時嘗試格式化您的代碼。它有助於我們更快地理解您的問題。 – aedm

回答

4

這是因爲只有做出反應時更新其狀態或道具改變成分,但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