High Order Component
High order component sama halnya dengan high order function, dua istilah ini mereturn sesuai dengan namanya misal HOC akan mereturn sebuah component sedangkan HOF mereturn sebuah function
untuk membuat HOC seperti ini
export const withComponent (Component) => props => {
const data = "hello"
return <Component data={data} {...props} />
}
maka setiap component yang dibungkus dengan withComponent akan mewarisi props data yang isinya hello
contoh:
const ChildCompoennt = () => {
return <p>{props.data}</p>;
};
export default withComponent(ChildCompoennt);
maka outputnya adalah "hello"
HOCnya ini dibuat dengan curried function. jadi kalau dibedah kodenya jadi seperti ini
export const withComponent (Component) => {
return (props) => {
const data = "hello"
return <Component data={data} {...props} />
}
}
Kapan menggunakan HOC?
HOC dapat digunakan dibeberapa kasus misal
- Komponenent lain memiliki state atau function yang sama
- Untuk sharing data antar component
Combine beberapa HOC di 1 component
HOC dapat dicombine dengan mengunakan package tambahan yaitu Ramdajs
cara mengunakannya seperti ini
import {compose} from "ramda"
...
export default compose(userHOC, chartHOC)(ChildComponent)
dengan ini props di userHOC dan chartHOC akan diwariskan ke ChildComponent