Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 当使用React钩子时,我们如何在开始时为一些复杂的数据结构设置状态?_Reactjs_React Hooks - Fatal编程技术网

Reactjs 当使用React钩子时,我们如何在开始时为一些复杂的数据结构设置状态?

Reactjs 当使用React钩子时,我们如何在开始时为一些复杂的数据结构设置状态?,reactjs,react-hooks,Reactjs,React Hooks,我们可能有 const [data, setData] = useState([]); 但是,如果我们需要将初始状态设置为一些复杂的数据结构,例如360个对象的数组,每个对象表示初始金额、每月供款、赚取的利息和最终的每月余额,就像计算复利或抵押贷款一样,该怎么办呢。我们如何建立这种复杂的数据结构 如何使用iLife: const [data, setData] = useState( (function() { const obj; // set up the object re

我们可能有

const [data, setData] = useState([]);
但是,如果我们需要将初始状态设置为一些复杂的数据结构,例如360个对象的数组,每个对象表示初始金额、每月供款、赚取的利息和最终的每月余额,就像计算复利或抵押贷款一样,该怎么办呢。我们如何建立这种复杂的数据结构

如何使用iLife:

const [data, setData] = useState( (function() {
  const obj;
  // set up the object

  return obj;
}()) );
?


我认为一个预防措施是,我们不希望每次调用函数组件时都运行循环。

最有效的方法是使用useEffect挂钩。我将快速解释它是如何工作的:

useEffect(()=>{
//here you can do your computation
let myFirstField=...;
let mySecondField=...;

setData({
  one: myFirstField;
  two: mySecondField;
});
},[]) //putting these "empty array" after use effect ensure that use Effect is called only after "onMount" (at the beginning and not at every refresh)
我想让你注意到一件事。使用状态挂钩与组件中的正常状态不同。当您想要更改某个字段时,不能只设置该字段,但需要重置整个状态


说到这里,使用effect将以您想要的方式初始化您的状态。在该方法中,您还可以运行axios请求或任何您想要的操作,只需记住相应地处理UI显示的内容(例如,如果执行axios请求,则显示微调器以让用户了解页面正在加载)

最有效的方法是使用useEffect挂钩。我将快速解释它是如何工作的:

useEffect(()=>{
//here you can do your computation
let myFirstField=...;
let mySecondField=...;

setData({
  one: myFirstField;
  two: mySecondField;
});
},[]) //putting these "empty array" after use effect ensure that use Effect is called only after "onMount" (at the beginning and not at every refresh)
我想让你注意到一件事。使用状态挂钩与组件中的正常状态不同。当您想要更改某个字段时,不能只设置该字段,但需要重置整个状态


说到这里,使用effect将以您想要的方式初始化您的状态。在该方法中,您还可以运行axios请求或任何您想要的操作,只需记住相应地处理UI显示的内容(例如,如果执行axios请求,则显示微调器,以便用户了解页面正在加载)

您可以使用来初始化数据。

您可以使用来初始化数据。

为什么要创建伪对象数组?他们无论如何都不会向你支付利息……在页面上显示它,这样我们就不必创建电子表格并向下拖动360行。你想在加载真实条目时显示360条假条目吗?”请稍候,否则加载微调器可能是更好的解决方案否。。。不需要加载。该页面可以有预定义的7%利率、5000的初始投资金额和1000的月供款,并且可以组成整个电子表格。这是“真实”的数据。用户可以更改输入框上的7%、5000或1000中的任何一个。这不涉及远程获取数据如果它是一个具有默认值的常量,则将其作为
const initialData={…}
存储在组件外部,然后在组件中使用
useState(initialData)
?为什么要创建一个伪对象数组?他们无论如何都不会向你支付利息……在页面上显示它,这样我们就不必创建电子表格并向下拖动360行。你想在加载真实条目时显示360条假条目吗?”请稍候,否则加载微调器可能是更好的解决方案否。。。不需要加载。该页面可以有预定义的7%利率、5000的初始投资金额和1000的月供款,并且可以组成整个电子表格。这是“真实”的数据。用户可以更改输入框上的7%、5000或1000中的任何一个。这不涉及远程获取数据如果它是一个具有默认值的常量,则将其作为
const initialData={…}
存储在组件外部,然后在组件中使用
useState(initialData)
?因为存在惰性初始状态,这意味着如果我们想。。。因为如果它是一个函数,它将被执行。。。啊,除非我们给它和函数,这个函数返回一个函数是的,如果你想延迟初始化一个函数,只需在
useState
函数中返回一个函数。因为有延迟初始状态,这意味着如果我们想。。。因为如果它是一个函数,它将被执行。。。啊,除非我们给它和函数,这个函数返回一个函数是的,如果你想延迟初始化一个函数,只需在
useState
函数中返回一个函数。