【发布时间】:2021-06-16 12:26:34
【问题描述】:
我在这里有两个功能。很明显它们之间有很多重叠,我想创建一个父函数,下面的两个函数都将从中扩展。
function Home() {
const [state, dispatch] = useContext(NTTrackerContext);
const history = useHistory();
function pushhistory(url, callback) {
history.push(url);
callback();
}
function teamhome2_message() {
const info = message.error({
content: "Log in to access team data!",
});
};
function checklogin(callback) {
if (!state.user.authenticated)
pushhistory("/accounts/login", function(){teamhome2_message();});
else
callback();
}
# ...
function APIHome() {
const [state, dispatch] = useContext(NTTrackerContext);
const history = useHistory();
function pushhistory(url, callback) {
history.push(url);
callback();
}
function apihome2_message() {
const info = message.error({
key: "apihome2",
content: "Log in to access team API!",
});
};
function checklogin(callback) {
if (!state.user.authenticated)
pushhistory("/accounts/login", function(){apihome2_message();});
else
callback();
}
# ...
但是,我一直在处理无效的状态/挂钩调用,没有正确创建实例。我最终不知道如何继续。
谁能提供我应该如何从父函数扩展两个home 函数的示例?
这些我看过:
- Thread one: 没用,因为我没有使用 redux
-
Thread two:这只是关于
return语句中的用法;我正在基于函数的组件中寻找return语句之外的用法。
提前致谢。
【问题讨论】:
-
考虑使用组合而不是继承medium.com/front-end-weekly/…
-
您可以使用 HOC(高阶组件)来完成此任务。它可能看起来像这样:
const APIHome = makeHome(APIHomeComponent)reactjs.org/docs/higher-order-components.html -
在 cmets 中提到,HOC 是这样做的方式
标签: javascript reactjs