Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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 native中的useEffect?_Reactjs_React Native_Components - Fatal编程技术网

Reactjs 如何更改类组件React native中的useEffect?

Reactjs 如何更改类组件React native中的useEffect?,reactjs,react-native,components,Reactjs,React Native,Components,我想把代码从一个函数重写到另一个类,但我被useEffect函数卡住了 我有一个在添加新元素后更新的数组,但函数countTotal在更新后开始工作。 所以 1) open App myArray有两个对象,总和=0(但应为300) 2) 将总和为100的新对象添加到myArray中三个对象,总和=300(应为400) 我试图添加componentDidMount和componentDidUpdate,但什么都没有。 有什么建议吗?您发布的代码似乎运行良好。我已经创建了代码沙盒url 上面代码

我想把代码从一个函数重写到另一个类,但我被useEffect函数卡住了

我有一个在添加新元素后更新的数组,但函数countTotal在更新后开始工作。 所以 1) open App myArray有两个对象,总和=0(但应为300) 2) 将总和为100的新对象添加到myArray中三个对象,总和=300(应为400)

我试图添加componentDidMount和componentDidUpdate,但什么都没有。
有什么建议吗?

您发布的代码似乎运行良好。我已经创建了代码沙盒url

上面代码中功能组件和类组件之间的唯一区别是

在这里,每次更改开支时都会调用useEffect,但在装入组件后,只会调用componentDidMount一次。因此,我们必须创建一个函数,并在每次费用更新时调用该函数

setState(updater, [callback])

因此,在调用setState时,我们可以将回调函数传递给setState并更新总值

因为setState是异步的,所以应该在回调中给出Count total

    this.setState(prevState => ({ 
            expenses: [obj, ...prevState.expenses]}), countTotal)

谢谢你的回答。是的,我的代码有效。。。它们的一部分。我将阅读有关回调的文章。我的问题有点变了。我已经更新了答案,你能查一下吗。在setState@Vovathanks中添加了回调!它起作用了。也许你知道如何在这里显示这个sumTotal->openappmyarray有两个对象,Total sum=0(但应该是300)。因为它只适用于componentDidMount…我使用与countTotal相同的代码添加componentDidMount,不确定它是否正确,但它运行良好。再次感谢
setState(updater, [callback])
    this.setState(prevState => ({ 
            expenses: [obj, ...prevState.expenses]}), countTotal)