Dan*_*ott 8 javascript reactjs
我正在构建一个需要渲染一些子组件的组件.更具体地说,我有一个Map组件,我想在其上显示一个Legend组件.
const Map = props => (
<div id="map">
{ this.props.children }
</div>
);
// Usage:
const MapWithLegend = () => (
<div id="map-view">
<Map><Legend /></Map>
</div>
);
// Usage:
const MapWithoutLegend = () => (
<div id="map-view">
<Map />
</div>
);
Run Code Online (Sandbox Code Playgroud)
但是,这也可以使用命名道具表达:
const Map = ({ legend } => (
<div id="map">{ legend }</div>
);
// Usage:
const MapWithLegend = () => (
<div id="map-view">
<Map legend={Legend} />
</div>
);
// Usage:
const MapWithoutLegend = () => (
<div id="map-view">
<Map />
</div>
);
Run Code Online (Sandbox Code Playgroud)
我不确定在缩放和可重用性方面哪种方式最好.最终,我们将不仅仅是传说来放置地图,例如:缩放,缩放/导航控件等......
为此使用React.Children是否有意义,还是应该使用命名道具?
我的直觉是,使用this.props.children的FreeS从关心它是否需要呈现一个传说,或任何其他子控件的地图,但是也带来了一个后门进入地图组成,即:通过任意组件作为Map组件的子项.
这是一个问题吗?this.props.children在渲染之前检查父组件是否常见?如果是这样,怎么样?
另外,造型呢?通过命名道具,我可以定位/设计"儿童",因为它们被命名,我知道它们是什么.使用React.Children,它是一个需要检查的组件数组,以便它们可以定位,在这种情况下,我从使用中获得了this.props.children什么?
我已经看到使用这两种范例的第三方组件,但我很好奇一个人选择一个而不是另一个的情景.
我建议children为此使用:
legend作为道具通过,你不知道<Map/>会用它做什么。<Legend/>检查孩子听起来就像你将实现一个大的 switch-case 语句来处理所有边缘情况。使用children不会产生任何边缘情况。
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |