【发布时间】:2020-06-22 15:02:38
【问题描述】:
我有一个应用程序正在使用类组件进行响应,我找到了一个我想添加到我的代码中的功能代码,但它是使用功能组件制作的。代码在这里https://codesandbox.io/s/framer-motion-animate-in-view-gqcc8,但相关部分是这个。
import { useInView } from "react-intersection-observer";
import { motion, useAnimation } from "framer-motion";
import "./styles.css";
function Box() {
const controls = useAnimation();
const [ref, inView] = useInView();
useEffect(() => {
if (inView) {
controls.start("visible");
}
}, [controls, inView]);
我不知道如何在我的类组件中添加该控件变量
class App extends Component {
constructor(props) {
super(props);
this.state = {
curtains: null,
loading: true,
renderNav: false
};
}
我应该将它添加到我的状态吗?我不明白如何让它在类组件中工作
【问题讨论】:
-
就像任何其他 React 组件一样渲染它。例如。在
render方法中,只是return <Box/>.. -
不清楚您的要求。主要逻辑似乎在
Box组件使用的钩子中。您是只想在代码中渲染Box组件,还是想提取一些特征并将代码用作您自己代码的蓝图? -
@trixn 是的,我想将该功能添加到我的组件中。我需要在我的代码中的组件内使用该控件。需要将那个 useffect 复制到我的类组件中,这样我就可以在我的渲染中使用那个“控制”变量
-
问题是我需要在一个钩子中声明“控制”变量,所以如果我需要在我的状态中声明它,请注意
-
将您的组件转换为功能组件可能会更容易,以便您可以使用该挂钩。否则,您将需要编写某种包装器。每个类组件都可以使用钩子编写为功能组件。
标签: javascript reactjs next.js