react中从类重构为功能钩子组件

Posted

技术标签:

【中文标题】react中从类重构为功能钩子组件【英文标题】:Reconstructing from class to functional hook component in react 【发布时间】:2020-10-15 04:29:37 【问题描述】:

只是想将我的应用程序从基于类的组件重新设计为基于功能挂钩的组件,并被这个回调 setState 代码块所吸引,并且无法使用有效的挂钩来实现这一点:

this.setState((prevState) => (
    items: [
      ...prevState.items,
      
        itemtitle: '',
        description: '',
        articlenr: '',
        amount: '',
        unit: '',
        price: '',
        taxpercentage: '',
        total: ''
      
    ],
    showItemDetail: true
  ))

【问题讨论】:

函数组件中没有this.setState()。相反,您需要使用useState hook。 我知道,上面是我想翻译以使用 hook 的工作代码 【参考方案1】:

您是在问如何将其转换为钩子?如果是这样,您将不得不发布您所在州的样子。

如果你的状态是整个对象,你可以这样做

import react, useState from "react";

const [items, setItems] = useState([]);

const [showItemDetail, setShowItemDetail] = useState(false)

setItems(items => [...items,
      
        itemtitle: '',
        description: '',
        articlenr: '',
        amount: '',
        unit: '',
        price: '',
        taxpercentage: '',
        total: ''
      
    ]
  )

setShowItemDetail(true)

【讨论】:

const [items, setItems] = useState([ itemtitle: "", description: "", articlenr: "", amount: "", unit: "", price: "", taxpercentage: "", total: "" ]) const [showItemDetail, setShowItemDetail] = useState(false) 您必须分别更新每个状态,我更新了答案以反映这一点

以上是关于react中从类重构为功能钩子组件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用钩子将 React 类组件转换为功能组件

使用 react-navigation 中的 useRoute 进行 Jest 单元测试

使用计时器管理 API 调用的 React 钩子

React Native Jest - 如何使用多个钩子测试功能组件?无法存根 AccessiblityInfo 模块

从类组件更新 Reacts 上下文值

DevTools 中带有 React 钩子的组件名称