程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果有多个属性,我如何将基于类的状态更改为基于函数的状态?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果有多个属性,我如何将基于类的状态更改为基于函数的状态??

开发过程中遇到如果有多个属性,我如何将基于类的状态更改为基于函数的状态?的问题如何解决?下面主要结合日常开发的经验,给出你关于如果有多个属性,我如何将基于类的状态更改为基于函数的状态?的解决方法建议,希望对你解决如果有多个属性,我如何将基于类的状态更改为基于函数的状态?有所启发或帮助;

我正在尝试将基于类的组件更改为基于函数的组件。

如果它只有一个属性,则很容易,例如 state = { value:1} const[value,SETVALue] = React.useState(1);

但如果它不止一个,我会陷入困境,因为我是这种编程语言的新手。

    state = {
        userToken: {
          email: '',password: ''
        },baseEmptyData: {
          receiptID: -1,processID: 0,receiptname: "",image: "",hasImage: 0,inputs: {
            companyname: '',fisno: '',fisTarihi: '',vd: '',vdNo: ''
            },userData: {
            name: '',surname: '',email: '',accountType: '',remaining: 0,quota: 0,corporate: '',APIKEY: '',APIURL: '',},

怎么改?我应该写一些类似的东西吗 const [userData,setUserData] = useState([name:"",surname:""]) 对吗?

如何将 baseEmptyData-inputs 部分更改为函数库?

解决方法

通常,出于以下几个原因,您需要将状态分解为可管理的相关数据块:

  1. 较小的相关状态值块更易于处理和推理。
  2. 与基于类的组件的 this.setState 不同,功能组件状态不是浅合并,您需要自己管理。

对于基于类的组件,您只能使用一个状态对象 this.state,但在功能组件中没有这样的限制,您可以根据需要使用尽可能多的 useState 钩子来表示您的组件状态。

对于您提供的基于类的状态,我看到 userTokenbaseEmptyData 之间有很好的划分。我将为每个创建一个状态,因为 baseEmptyData 看起来像静态初始“状态”,因此可以在组件外部声明并使用它。

const initialBaseEmptyData = {
  receiptID: -1,processID: 0,receiptName: "",image: "",hasImage: 0,inputs: {
    companyName: '',fisno: '',fisTarihi: '',vd: '',vdNo: ''
    },userData: {
    name: '',surname: '',email: '',accountType: '',remaining: 0,quota: 0,corporate: '',apiKEY: '',apiURL: '',},};

在组件中

const [userToken,setUserToken] = React.useState({
  email: '',password: ''
});
const [baseEmptyData,setBaseEmptyData] = React.useState(initialBaseEmptyData);

由于 baseEmptyData 更大、更复杂并且具有嵌套属性,您@R_322_9381@改用 useReducer 钩子更容易

useReducer 通常比 useState 更可取 涉及多个子值或下一个状态时的状态逻辑 取决于前一个。 useReducer 还可以让您优化 触发深度更新的组件的性能,因为您可以 向下传递调度而不是回调。

大佬总结

以上是大佬教程为你收集整理的如果有多个属性,我如何将基于类的状态更改为基于函数的状态?全部内容,希望文章能够帮你解决如果有多个属性,我如何将基于类的状态更改为基于函数的状态?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。