2017-05-25 54 views
0

我想根據不同的param在一個Component中渲染不同的視圖,這些視圖來自一些模板。 Main.js如何使用一些參數來獲取React組件

render() { 
    const{ data, isEdit } = this.props 
    console.log('Detail data:', data) 
    console.log('isEdit:', isEdit) 
    return <div> 
    {getView(data)} 
</div> 
} 

getView

function getView(data) { 
    let modelName = getModelName(data.PolciyName) 
    modelName = 'M1' 
    if (modelName) { 
    let Model = require(`./models/${modelName}`) 
    console.log('getView- modelName', modelName) 
    console.log('typeof', typeof M1) //Object 
    return <div><Model data={data} /></div> 
    } else { 
    return <div>no data</div> 
    } 
} 

M1

function M1(data) { 
    return <div> 
    <h2>{data.name}</h2> 
    </div> 
} 

這個代碼不能正常工作,它會得到一個錯誤。 Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of.主要

回答

0

當調用{getView(數據)}在渲染,

嘗試使用{this.getView(數據)}代替,同樣與任何參考函數M1。如果內存爲我服務,那是因爲JavaScript與其他OO語言的工作方式有點不同,因爲它實際上並沒有類,因此您必須在組件中本地顯式聲明範圍。

+0

'getView'是一個導入函數,來自'。/ viewUtils''的import {getView},所以'this.getView'是'undefined' – taven

相關問題