在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 如何構(gòu)建可用于嵌套的React組件?

如何構(gòu)建可用于嵌套的React組件?

使用antd的時(shí)候,用到Modal組件,如此使用:

return (
    <Modal someProps... >
        <p>...<p>
    </Modal>
)

好神奇!組件還可以包住其他組件。

畢竟以往我們做的組件都是類似這樣單標(biāo)簽使用的:<Compon ...someProps... />

那么,如何構(gòu)建,才能讓組件在使用時(shí)候可以嵌套其他內(nèi)容(包括其他組件),什么原理?

找了一些如何寫組件的博客文章,都沒有講到這些,想去antd看Modal的源碼,然而它引用了別的組件。實(shí)在看不出來。

謝謝!

回答
編輯回答
失魂人
    <Modal someProps... >
        <p>...<p>
    </Modal>

在這段代碼中,只有Modal是父元素,p是子元素。我這里不想用父子組件來解釋,因?yàn)樗麄儽举|(zhì)是React元素。

實(shí)際上你在這里聲明的是Modal元素,而在其中嵌套p這一寫法可以看作是JSX的語法糖,用于更好地表現(xiàn)層次關(guān)系,本質(zhì)上等同于:

    <Modal someProps... children={(
        <p>...</p>
    )
    } />

所以Modalrender方法并不會(huì)自動(dòng)展現(xiàn)p元素,需要手動(dòng)將{ this.props.children }寫在對(duì)應(yīng)位置

另外關(guān)于React的常見使用模式,可以閱讀官方文檔

2018年5月29日 23:28
編輯回答
網(wǎng)妓
class Main extends Component {
    constructor(props) {
        super(props);
    }
    render() {
        return (
            <div>
                { this.props.children }
            </div>
        )    
    }
}
2017年12月27日 15:17