- Hands-On Design Patterns with React Native
- Mateusz Grzesiukiewicz
- 323字
- 2021-08-13 15:12:56
Component composition
If you have learned any Object-Oriented (OO) language, you may have used inheritance extensively. In JavaScript, this concept is a little bit different. JavaScript inheritance is based on prototypes, and so we call it prototypal inheritance. Functionalities are not copied to the object itself—they are inherited from the prototype of the object and possibly even through other prototypes in the prototype tree. We call this a prototype chain.
However, in React, using inheritance is not very common. Thanks to components, we can embrace another pattern called component composition. Instead of creating a new class and inheriting from the base class, we will create a new parent component that will use its child component to make itself more specific or more powerful. Let's look at an example:
// src/ Chapter 1/ Example_6_Component_composition_red_text/ App.js
const WarningText = ({style, ...otherProps}) => (
<Text style={[style, {color: 'orange'}]} {...otherProps} />
);
export default class App extends React.Component {
render = () => (
<View style={styles.container}>
<Text style={styles.text}>Normal text</Text>
<WarningText style={styles.text}>Warning</WarningText>
</View>
);
}
The App component is being built out of three components: View, Text, and WarningText. It is a perfect example of how one component, through composition, can reuse the capabilities of others.
The WarningText component uses composition to enforce the orange text color in the Text component. It makes the generic Text component more specific. Now, we can reuse WarningText in any place of the app where it is necessary. If our app designer decides to alter the warning text, we can quickly adapt to the new design in one place.
- Facebook Application Development with Graph API Cookbook
- Design Principles for Process:driven Architectures Using Oracle BPM and SOA Suite 12c
- R語言游戲數據分析與挖掘
- R語言數據可視化實戰
- 深度強化學習算法與實踐:基于PyTorch的實現
- TradeStation交易應用實踐:量化方法構建贏家策略(原書第2版)
- PHP編程基礎與實踐教程
- Arduino計算機視覺編程
- Web App Testing Using Knockout.JS
- 并行編程方法與優化實踐
- Magento 2 Beginners Guide
- QlikView Unlocked
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐
- PHP 7 Programming Blueprints
- Implementing Domain:Specific Languages with Xtext and Xtend