我有一个组件 ContentHeader,我将在几乎每个内容中使用它,它提供了一个带有标题的标题和两个按钮,新建和搜索。
import React from 'react';
import Title from 'components/Title';
import BtnSearch from 'components/BtnSearch';
import BtnNew from 'components/BtnNew';
class ContentHeader extends React.Component {
constructor (props) {
super(props);
}
render () {
return (
<div className='content-header'>
<Title name={this.props.title} />
<ul className='actions'>
<li className='action-item'>
<BtnSearch />
</li>
<li className='action-item'>
<BtnNew />
</li>
</ul>
</div>
);
}
}
export default ContentHeader;
我在 ContentHeader 中使用的按钮组件:
// Component Button Search
import React from 'react';
import { NavLink } from 'react-router-dom';
class BtnSearch extends React.Component {
constructor (props) {
super(props);
}
render () {
return (
<a className='btn-actions btn-search' onClick=CUSTOM_REQUEST>
<span className="icon-center"></span>
</a>
)
}
}
export default BtnSearch;
// Component Button New
import React from 'react';
import { NavLink } from 'react-router-dom';
class BtnNew extends React.Component {
constructor (props) {
super(props);
}
render () {
return (
<NavLink to=CUSTOM_REQUEST className='btn-actions btn-new'>
<span className="icon-center"></span>
</NavLink>
)
}
}
export default BtnNew;
假设我将有 Projects、Contracts 和 Widgets 主要内容,我需要使用里面的 ContentHeader。
对于每个主要内容,我将有一个不同的标题标签,我可以通过道具传递它,因为它只有一层深。而且,我会对 ContentHeader 组件中的每个按钮有不同的请求,这与它所属的主要内容有关。
那么,如何将这些不同的请求传递给与我的主要内容相关的按钮?道具也行?如果我有更深的组件树怎么办?
PS:作为一个例子,我在按钮组件中使用了 NavLink 和一个简单的 onClick,并带有一个标志 CUSTOM_REQUEST
谢谢!