์ฌ๋ฌ ์ปดํฌ๋ํธ ๊ฐ ๊ณต์ ๋๋ ๋ก์ง์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์ ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์
//Ex
function hof(individualLogic) {
// x, y๋ฅผ ์ธ์๋ก ๊ฐ์ง๋ ์ต๋ช
ํจ์๋ฅผ ๋ฆฌํด
return function(x,y) {
// ์ธ์๋ก ์ ๋ฌํ individualLogic ํจ์ ์คํ
const result = individualLogic(x, y);
//๊ณตํต ๋ก์ง ๋ถ๋ถ
console.log('result:', result);
return result;
};
}
function add(x, y) {
return x + y;
}
function multiply(x, y) {
return x * y;
}
const addAndLog = hof(add);
const multiplyAndLog = hof(multiply);
with
๋ผ๋ ์ ๋์ด์ ํจ๊ผ prop
์ ์ด๋ฆ์ ๋ถ์ด๋ ๊ฒ์ด ๊ด๋กprop
์ ์ถ์ฒ๋ฅผ ๋ช
ํํ๊ฒ ์ถ์ ๊ฐ๋ฅwithHOC.js
import component from '๊ฒฝ๋ก';
export default function withHOC(component) {
return {
name,
// ๊ณตํต์ ์ธ ๋ก์ง
created() {
},
render(createElement) {
return createElement(component);
}
}
}
HOC๋ฅผ ๋ง์ด ์ฐ๋ฉด ์ธ์๋ก ๊ทธ๋งํผ ์ปดํฌ๋ํธ ๊น์ด๊ฐ ๊น์ด์ง์ ๋ฐ๋ผ ์ปดํฌ๋ํธ ๊ฐ ํต์ ์ ๋ถํธํจ์ด ๋ฐ์