我有一个应用程序正在使用类组件开发react,我发现了一个功能的代码,我想添加到我的代码中,但它是使用功能组件制作的。代码在这里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
};
}
我应该把它添加到我的州吗?我不明白如何让它在类组件中工作
您还可以在任何地方使用功能组件,如类组件。顺便说一句,它也在使用状态,所以不需要担心不能在其中使用状态的事情。
使用:
<Box props={props}/>
假设你有
const functionalComponent=()=>{
return <h1>Functional componenet</h1>
}
您想将其更改为类组件
在顶部使用此导入:
import React,{Component} from "react";
并将代码更改为这样的内容:
Class functionalComponent extends Component{
state={}
render(){
return <h1>functional component</h1>;
}
}
您的功能组件现在更改为类组件。
要在现有的类组件中使用它,您不需要将功能组件更改为类组件,除非您需要本地状态。
随着react钩子的引入,这个钩子也发生了变化,也就是说,如果您计划使用钩子,您不必将功能组件更改为类组件。
在代码中:useffect是一个钩子,不能在类组件中使用它。
我建议简单地在类组件中导入函数组件,如果必须传递一些值,可以将其作为道具传递。
就导入功能组件而言:
import React,{Component} from "react";
import Box from "./Box.js";
class App extends Component {
constructor(props) {
super(props);
this.state = {
curtains: null,
loading: true,
renderNav: false
};
render(){
return(<Box/>);
}
}
不能在类组件内部使用挂钩。您可以编写一个小包装器,在渲染道具中公开ref
和控件
:
const Controls = ({children}) => {
const controls = useAnimation();
const [ref, inView] = useInView();
useEffect(() => {
if (inView) {
controls.start("visible");
}
}, [controls, inView]);
return children(ref, controls);
};
然后你可以这样使用它:
class App extends Component {
// ...
render() {
return (
<Controls>
{(ref, controls) => (
<motion.div ref={ref} animate={controls}>
{/* content */}
</motion.div>
)}
</Controls>
);
}
}
我有以下react功能组件来帮助支持react路由器所需的身份验证路由。 我需要将其从功能组件转换为类组件,以便利用React.component的componentDidMount方法。不幸的是,我很难弄清楚如何迁移它。如果我照原样做,我需要复制组件和…rest参数,但我不知道怎么做。我想我可以用这个.props.Component获得组件参数,但我不确定如何拉…rest。我是JSX和ES6的新
我试图将我的类组件转换为功能组件,但我的过滤器不再工作了。 主要的错误是当我想转换listProducts因为我不知道如何定义与useState为这种情况下的preState 如何能为情况更新状态? 这是我的密码 类组件 功能成分
我想将web设计师用纯HTML编写的复杂div容器转换为React组件。此div容器具有React to manage的状态。我知道我可以将div转换为JSX,但这意味着设计师和我都要加倍努力。危险的是,Html不处理状态。我可以创建React的子类。组件,定义状态并在不使用JSX的情况下将状态值呈现到div容器中? 下面是div容器标记的一个片段:
问题内容: 我尝试将函数传递给子组件。当用户单击每个子组件时,将调用onclick函数。此onclick函数将写入父组件。 父组件: 子组件: 在这一行: 它说没有定义handleClick …如何解决这个问题? 感谢您的回答。 问题答案: 您需要将Agents绑定到AgentsList:这是您的代码的一个简单示例,我不得不删除一些东西,但是您明白了: http://jsfiddle.net/vh
我是ReactJS的初学者,我正在将类组件转换为函数式组件。 虽然这是一种不推荐使用的生命周期方法,但我想知道如何在功能组件中重写它。提前谢谢
我有下面的类组件- https://pastebin.com/WigZksAq 我想将面板移动到单独的文件中- 但是我不明白如何修改主类组件的状态。