2016-04-23 129 views
1

我正在嘗試學習流星反應,並且我有一個關於使用FlowRouter將內容插入HTML模板頁面的問題。FlowRouter - 將內容插入到HTML模板

假設一切正確導入,這是相關代碼:

routes.jsx

FlowRouter.route('/post/:postId', { 
    name: 'posts.single', 
    action({postId}) { 
    mount(MainLayoutCtx, { 
     content:() => (<Post postId={postId}/>) 
    }); 
    } 
}); 

index.jsx - 在MainLayoutCtx指向

const Layout = ({content =() => null }) => (
    //code here 
); 

在index.jsx中,{content =()=> null}。這是不是意味着內容是一個沒有參數並且輸出爲空的對象字面值?

但是,當內容正在routes.jsx中傳遞時,它是()=>(/ Post postId = {postId} />)那麼,是不是內容輸出後postId作爲道具傳入?

這與index.jsx所期望的匹配程度如何?

+0

在Flow-Router中沒有直接的方法將數據從路由傳遞到模板,看看[flow-router-extra](https://github.com/VeliovGroup/flow-router),這是擴展的FR的fork,用鉤子將數據從路由器傳遞到模板 –

回答

1

在你的例子中,content是一個沒有輸入參數的函數,它返回一個新的React組件。 (null是一個有效的陣營部件,也。)

content:() => (<Post postId={postId}/>) 

在這種情況下postId不是參數,但封閉變量。當達到代碼時,閉包對象被創建運行時嵌入值postId

index.jsxindex.jsx您的佈局需要一個沒有參數的函數來返回一個React組件,這正是content。當你打電話給content()時,它會創建一個新的Post組件,並將其封閉對象的postId作爲道具傳遞。