复合组件给与你⾜够的敏捷去定义⾃定义组件的外观和行为,这种方式更明确和安全。如果组件间有公用的非UI逻辑,将它们抽取为JS模块导⼊使⽤⽽不是继承它。
实现⼀个简单的复合组件,如Antd的Card
import React, { Component } from 'react'function Card(props) {return <div className="card">{props.children}</div>}function Formbutton(props) {return (<div className="Formbutton"><button onClick= {props.children.defaultBtns.searchClick}>默认查询</button><button onClick= {props.children.defaultBtns.resetClick}>默认重置</button>{props.children.btns.map((item, index) => {return <button key={'btn' + index} onClick= {item.onClick}>{item.title}</button>})}</div>)}function CompositionPage(props){return (<div><Card><p>我是内容</p></Card><Formbutton>{{defaultBtns: {searchClick: () => console.log('默认查询'),resetClick: () => console.log('默认重置')},btns: [{title: '查询',onClick: () => console.log('查询')},{title: '重置',onClick: () => console.log('重置')}]}}</Formbutton></div>)}
