嗨,我是React的新手。我在过去的两周里开始学习React,目前我正在和一个朋友一起使用MERN堆栈创建一个网站。每当看到维护状态的需求时,我就一直在使用类组件,但是我发现钩子可以模仿React类,并且可以减少代码长度,提高可读性并创建更多可维护的代码。所以我只是想知道,如果存在钩子,那么从2020年起应该在React中使用类组件吗?类涵盖哪些用例,而功能组件没有涵盖这些用例?
答案 0 :(得分:0)
挂钩是类组件的完整替代品。从react docs,
我们希望Hooks涵盖类的所有现有用例,但在可预见的将来,我们将继续支持类组件。
阅读上面链接的有关采用策略,钩子背后的意图的页面-是理解和形成意见的好地方。
我个人而言,我喜欢钩子。自从引入了钩子以来,就没有使用过类组件。我还没有找到用例组件,因为钩子不能满足要求。
答案 1 :(得分:0)
这是偏爱的事情,但社区正在朝着钩子前进。 钩子和其他功能几乎可以覆盖钩子中完成的所有事情
例如
from pdfminer.layout import LAParams, LTTextBox
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
fp = open('Ozark-Episode-1-01-Sugarwood.pdf', 'rb')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
pages = PDFPage.get_pages(fp)
for index, page in enumerate(pages):
interpreter.process_page(page)
layout = device.get_result()
for lobj in layout:
if isinstance(lobj, LTTextBox):
x, y, text = lobj.bbox[0], lobj.bbox[3], lobj.get_text()
print('%r: %s' % ((round(x, 1), round(y,1)), text)
=> (108.0, 579.9): No, it wasn’t--
(194.0, 591.9): MARTY
(333.0, 591.9): BRUCE
Sorry, all right?
(252.0, 555.9): BRUCE
(180.0, 543.9): What then? A place like this
validates us. We’re making money
hand over fist. Tell me we don’t
need the higher rent on our books.
(108.0, 483.9): Marty squares up to the skyline, Bruce behind him.
useEffect
=> componentDidMount, componentDidUpdate, componentWillMount
useState
=> this.setState({})
有些事情在类中比在钩子中容易。像React.memo
中的第二个参数是一个回调,以确保在执行之前更改状态。这在钩子中是可行的,但还不如以前