关键词:
【中文标题】如何使用钩子将 React 类组件转换为功能组件【英文标题】:How to convert React class component to functional component with hooks 【发布时间】:2021-04-26 00:54:39 【问题描述】:我正在 Reactjs 中创建一个降价预览器,用户在 textarea 标记中输入降价,转换后的降价显示在 div 标记中。目前,该项目在一个类组件中,我想知道如何将其转换为带有钩子的功能组件,因为在我拥有的另一个项目中实现它会更容易。我环顾四周,似乎找不到任何对我有很大帮助的东西,尤其是关于如何转换构造函数。任何帮助将不胜感激!
export default class App extends React.Component
constructor(props)
super(props);
this.state =
markdown: "",
;
updateMarkdown(markdown)
this.setState( markdown );
render()
return (
<div className="App">
<div className="container">
<div className="row mt-4">
<div className="col text-center">
<h1>
" "
<Badge className="text-align-center" variant="light">
Markdown Previewer
</Badge>
</h1>
</div>
</div>
<div className="row mt-4">
<div className="col-md-6">
" "
<div className="col text-center">
<h4>
<Badge className="text-align-center" variant="secondary">
Markdown Input
</Badge>
</h4>
</div>
<div className="input" style=inputStyle>
<textarea
className="input"
style=inputStyle
value=this.state.markdown
onChange=(e) =>
this.updateMarkdown(e.target.value);
>
</textarea>
</div>
</div>
<div className="col-md-6">
" "
<div className="col text-center">
<h4>
<Badge className="text-align-center" variant="secondary">
Preview
</Badge>
</h4>
</div>
<div
style=outputStyle
dangerouslySetInnerHTML=
__html: marked(this.state.markdown),
></div>
</div>
</div>
</div>
</div>
);
【问题讨论】:
【参考方案1】:这样的事情应该可以工作:
const App = () =>
const [markdown, setMarkdown] = React.useState('')
return (
<div className="App">
...other html
<textarea
value=markdown
onChange=(e) => setMarkdown(e.target.value)
</textarea>
...other html
</div>
)
对您来说最大的变化将是react state hook。希望我的示例清楚地展示了如何将类组件状态转换为反应钩子。您还可以将onChange
方法移动到返回上方的自己的函数中。比如……
const [markdown, setMarkdown] = React.useState('')
const handleChange = (e) => setMarkdown(e.target.value)
return (...)
【讨论】:
【参考方案2】:import React, useState from 'react';
export default function App(props)
const [markdown, setMarkDown] = useState("");
const updateMarkdown = (markdown) =>
setMarkDown(markdown);
return (
<div className="App">
<div className="container">
<div className="row mt-4">
<div className="col text-center">
<h1>
" "
<Badge className="text-align-center" variant="light">
Markdown Previewer
</Badge>
</h1>
</div>
</div>
<div className="row mt-4">
<div className="col-md-6">
" "
<div className="col text-center">
<h4>
<Badge className="text-align-center" variant="secondary">
Markdown Input
</Badge>
</h4>
</div>
<div className="input" style=inputStyle>
<textarea
className="input"
style=inputStyle
value=markdown
onChange=(e) =>
updateMarkdown(e.target.value);
>
</textarea>
</div>
</div>
<div className="col-md-6">
" "
<div className="col text-center">
<h4>
<Badge className="text-align-center" variant="secondary">
Preview
</Badge>
</h4>
</div>
<div
style=outputStyle
dangerouslySetInnerHTML=
__html: marked(markdown),
></div>
</div>
</div>
</div>
</div>
)
我在这里所做的是:
-
用函数替换类
已删除构造函数
类方法在函数内部不起作用,因此将它们全部转换为函数(闭包)。
使用的 React 钩子 (useState)
【讨论】:
如何将类组件转换为功能组件?
】如何将类组件转换为功能组件?【英文标题】:howtoconvertclasscomponenttofunctioncomponent?【发布时间】:2022-01-0821:27:22【问题描述】:我是React新手,我正在尝试将下面的代码转换为函数组件,但它不起作用,我从未使用过类组件。... 查看详情
如何使用 React Hooks 将具有构造函数的类转换为功能组件?
】如何使用ReactHooks将具有构造函数的类转换为功能组件?【英文标题】:HowcanIconvertaclasswithaconstructortoafunctionalcomponentusingReactHooks?【发布时间】:2021-07-0404:15:19【问题描述】:如何使用ReactHooks将以下带有构造函数的类转换为功... 查看详情
react中从类重构为功能钩子组件
...钩的组件,并被这个回调setState代码块所吸引,并且无法使用有效的挂钩来实现这一点:this.setState((prevState)=>(items: 查看详情
使用反应挂钩将基于类的组件转换为功能组件[重复]
...组件中,使用this.setState更新我的状态很容易,但是对于如何实现的钩子,我很困惑?例 查看详情
如何将firebase与react功能组件同步?
】如何将firebase与react功能组件同步?【英文标题】:Howtosyncfirebasewithreactfunctionalcomponents?【发布时间】:2020-08-0411:33:50【问题描述】:我正在构建一个简单的React应用程序,使用功能组件(而不是类)。因此,在将数据库与状态... 查看详情
如何将 React 类组件转换为函数组件
】如何将React类组件转换为函数组件【英文标题】:HowtoconvertaReactClassComponenttoaFunctionComponent【发布时间】:2020-02-0110:02:20【问题描述】:我想在画布内显示图像。我将其作为类组件进行,但我的要求是使用函数组件:classCanvasexte... 查看详情
将功能组件代码转换为类组件代码
...7【问题描述】:我是React中的函数式组件的新手,想知道如何将下面的代码从基于函数的代码转换为基于类的代码。我试过了,但在“React.useEffect”方面遇到了麻烦。任何帮助将不胜感激!:)(还有一个问题,你会说我学习功能... 查看详情
如何使用 useState - 钩子将类组件(输入,条件)更改为功能组件?
】如何使用useState-钩子将类组件(输入,条件)更改为功能组件?【英文标题】:Howtochangeaclasscomponent(input,conditional)tofunctionalcomponentwithuseState-hook?【发布时间】:2020-01-2311:48:54【问题描述】:我想将工作类组件更改为功能组件。... 查看详情
如何使用 Async / Await 和 React 钩子?
】如何使用Async/Await和React钩子?【英文标题】:HowtouseAsync/AwaitwithReacthooks?【发布时间】:2020-10-0404:32:00【问题描述】:我正在学习React并遵循视频教程。讲师使用了类组件,而我正在使用功能组件来复习钩子概念。我想将此代... 查看详情
将 React 函数组件转换为类组件问题
...2711:31:21【问题描述】:我有以下react功能组件来帮助支持使用react-router进行身份验证所需的路由。constPrivateRoute=(component:Component,...rest)=>(<Route... 查看详情
如何防止我的功能组件使用 React 备忘录或 React 钩子重新渲染?
】如何防止我的功能组件使用React备忘录或React钩子重新渲染?【英文标题】:HowcanIpreventmyfunctionalcomponentfromre-renderingwithReactmemoorReacthooks?【发布时间】:2019-07-2314:56:06【问题描述】:当hiddenLogo改变值时,组件被重新渲染。我希... 查看详情
如何使用 React 钩子测试功能组件内部的功能?
】如何使用React钩子测试功能组件内部的功能?【英文标题】:HowtotestfunctionsinsidefunctionalcomponentswithReacthooks?【发布时间】:2021-04-1323:39:26【问题描述】:我有一个使用useState钩子的功能组件,如下所示:importReact,useStatefrom\'react\'... 查看详情
反应:从类转换为具有状态的功能组件
...ponentwithstate【发布时间】:2021-02-2120:47:59【问题描述】:如何将类组件转换为函数式组件?importReact,Componentfrom\'react\'classTestextendsComponentstate=value:"testtext",isInEditMode:f 查看详情
React Native Jest - 如何使用多个钩子测试功能组件?无法存根 AccessiblityInfo 模块
】ReactNativeJest-如何使用多个钩子测试功能组件?无法存根AccessiblityInfo模块【英文标题】:ReactNativeJest-HowtotestFunctionalcomponentwithmultiplehooks?UnabletostubAccessiblityInfomodule【发布时间】:2022-01-1601:37:15【问题描述】:我正在尝试为我最... 查看详情
如何将类组件转换为功能组件?
】如何将类组件转换为功能组件?【英文标题】:HowcanIconvertclasscomponenttofunctionalcomponent?【发布时间】:2021-11-0701:40:31【问题描述】:我有一个基于类的组件,我想转换为基于函数的组件,我的代码如下:importenableRipplefrom\'@syncfu... 查看详情
如何将类组件重写为 React Functional?
】如何将类组件重写为ReactFunctional?【英文标题】:HowtorewriteclasscomponenttoReactFunctional?【发布时间】:2021-09-0103:12:33【问题描述】:我是React新手,正在学习基础知识,但现在我需要重写一个Class组件才能使用ReactHooks。所以我想... 查看详情
将类重构为 React 中的功能组件
】将类重构为React中的功能组件【英文标题】:RefactorclasstofunctioncomponentsinReact【发布时间】:2021-12-2800:48:30【问题描述】:我很难将这3个类组件转换为函数组件,类组件正在工作,我只是想将它们转换为学习目的。API调用:yelp.... 查看详情
将功能组件转换为类组件(ReactJS)的问题
】将功能组件转换为类组件(ReactJS)的问题【英文标题】:Probleminconvertingfunctionalcomponenttoclasscomponent(ReactJS)【发布时间】:2020-10-1717:20:48【问题描述】:这是我的功能组件。工作正常importReactfrom"react";functionRecommendationCard(props)con... 查看详情