我將狀態 (setActive) 傳遞給 ButtonsOur 組件。此外,通過回呼,我將 setActive 傳遞給 HOC,但我收到此錯誤“Uncaught TypeError: setActive is not a function”。為什么它不起作用,我該如何解決這個問題?在 ButtonsOur 組件中,我通過 props 從父組件傳遞 setActive
這是我的按鈕我們的組件
import HOC from '../../../hoc/HocPopUp';
function ButtonsOur({ setActive, open }) {
return (
<div className="base__routes__button">
<Buttons className="base__button__moreInf open-popup-exc" Click={open(setActive)}>Докладн?ше</Buttons>
<Buttons className="base__button__moreInf open-popu p-exc" Click={open(setActive)}>Забронювати</Buttons>
</div>
);
}
export default HOC(ButtonsOur);
這是我的 HOC
const HOC = (Component) => {
function HandleChange(props) {
function open(setActive) {
setActive(true);
}
function close(setActive) {
setActive(false);
}
return (
<Component
close={() => close}
open={() => open}
// eslint-disable-next-line react/jsx-props-no-spreading
{...props}
/>
);
}
return HandleChange;
};
export default HOC;
uj5u.com熱心網友回復:
HOC 沒有從傳遞的道具中setActive讀取。open
此外,您需要盡早傳遞原始道具,并在必要時讓 HOC 中的道具覆寫它們。
const HOC = (Component) => {
function HandleChange(originalProps) {
function open(setActive) {
originalProps.setActive(true);
}
function close(setActive) {
originalProps.setActive(false);
}
return (
<Component
// eslint-disable-next-line react/jsx-props-no-spreading
{...originalProps}
close={close}
open={open}
/>
);
}
return HandleChange;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491803.html
標籤:javascript 反应 高阶函数 特设的
上一篇:常數是如何設定的?
