2016-10-28 81 views
0

我想加載數據使用反應Komposer,我不知道我做錯了什麼,很確定這是它的方式,除非我錯過了什麼。但是我沒有在UI中獲取任何數據。可以使用幫助流星加載數據與反應Komposer

container.js

import { composeWithTracker } from 'react-komposer'; 
import RightNavBar from './right-nav-bar.jsx'; 

function composer(props, onData) { 
    const subscription = Meteor.subscribe('currentUser'); 
    const currentUser = 'bbbb'; 
    onData(null, currentUser); 
} 
export default composeWithTracker(composer)(RightNavBar); 

我的組件

export class RightNavBar extends React.Component { 
    render() { 
     return (
      <div> 
       aaaa {currentUser} 
      </div> 
     ); 
    } 
} 
+0

如果'currentUser'是一個對象而不是字符串呢? –

+0

你有工作嗎? – MasterAM

+0

我做了,我需要回答它。這個問題是由於不正確的進口 –

回答

0

這裏是react-komposer's repository 「標準」 的例子(適用於您的具體情況)

function composer(props, onData) { 
    const subscription = Meteor.subscribe('currentUser'); 
    if (subscription.ready()) { 
    const currentUser = Meteor.user(); //or whatever 
    onData(null, {currentUser}); 
    }; 
}; 

在這裏你訂閱,當訂閱準備就緒時,你的組件被渲染。否則,將呈現一個loading組件。

onData的第二個參數應該是一個對象。它與傳遞到您的組件的其他props合併,並可通過this.props從您的組件內訪問。

從您的組件中,props對象可通過this.props獲得,因此您可以解構它或直接訪問其屬性。

class RightNavBar extends React.Component { 
    render() { 
    const {currentUser} = this.props; 
    return (
     <div> 
     Hello, {currentUser.name}! 
     </div> 
    ); 
    } 
} 

您的代碼發送一個字符串,而不是一個對象,並作出反應,但未得到組件內使令牌currentUser感的方式。

+0

所以我只是測試了這一點,並添加了console.log(currentUser);剛剛const後,但我得到undefined –

+0

你傳遞給組件?您應該添加提取您所需數據的查詢。如果用戶沒有登錄,'Meteor.user()'顯然將是'undefined'。 – MasterAM

+0

用戶已登錄,但我也是這樣測試的const const currentUser = {data:'test'};仍然未定義。數據沒有傳遞給組件。如果組件嵌入另一個組件中,是否存在問題?我有頭部組件,它留下了導航組件和右側導航欄組件 –