在 reactjs 的每个组件中重用 useEffect 代码
Reusing useEffect code in every component in reactjs
我有一个 useEffect
,它在组件中初始化 wowjs
,如下所示:
import WOW from "wowjs";
const HomePage = () => {
useEffect(() => {
const wow = new WOW.WOW({
boxClass: "wow",
animateClass: "animated",
offset: 0,
mobile: false,
live: true,
scrollContainer: null
});
wow.init();
}, []);
return (
<div>
....
</div>
)
}
我希望在许多组件中使用此 useEffect
,以便 wowjs
动画可以 运行 在每次路由更改时。我如何避免在我的 reactjs 项目中重复这段代码?
正如 RTW 在他的评论中提到的那样,您可以使用 HOC 来集中此代码。
但是看起来你已经被钩子钩住了,我建议把这段代码放在一个自定义的 useWow
钩子中,然后在你可能需要它的每个组件中调用这个钩子。
const useWow = () => {
const initWow = () => {
const wow = new WOW.WOW({
boxClass: "wow",
animateClass: "animated",
offset: 0,
mobile: false,
live: true,
scrollContainer: null
});
wow.init();
}
return { initWow }
}
然后在你的组件中
const { initWow } = useWow()
useEffect(() => {
initWow();
}, [])
我有一个 useEffect
,它在组件中初始化 wowjs
,如下所示:
import WOW from "wowjs";
const HomePage = () => {
useEffect(() => {
const wow = new WOW.WOW({
boxClass: "wow",
animateClass: "animated",
offset: 0,
mobile: false,
live: true,
scrollContainer: null
});
wow.init();
}, []);
return (
<div>
....
</div>
)
}
我希望在许多组件中使用此 useEffect
,以便 wowjs
动画可以 运行 在每次路由更改时。我如何避免在我的 reactjs 项目中重复这段代码?
正如 RTW 在他的评论中提到的那样,您可以使用 HOC 来集中此代码。
但是看起来你已经被钩子钩住了,我建议把这段代码放在一个自定义的 useWow
钩子中,然后在你可能需要它的每个组件中调用这个钩子。
const useWow = () => {
const initWow = () => {
const wow = new WOW.WOW({
boxClass: "wow",
animateClass: "animated",
offset: 0,
mobile: false,
live: true,
scrollContainer: null
});
wow.init();
}
return { initWow }
}
然后在你的组件中
const { initWow } = useWow()
useEffect(() => {
initWow();
}, [])