Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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上下文API更新组件_Reactjs_React Hooks_React Context - Fatal编程技术网

Reactjs 创建新对象时使用React上下文API更新组件

Reactjs 创建新对象时使用React上下文API更新组件,reactjs,react-hooks,react-context,Reactjs,React Hooks,React Context,我是React新手,我正在尝试在下面的教程中使用React上下文API来更新组件。最初,我使用json对象加载推文。在TweetForm组件中,在提交表单时,我通过使用setTweets函数预先添加一个新对象来更新这个tweets数组。当我控制台记录tweets数组时,它向我显示我的新tweet正在添加到数组中,但我的tweets没有更新 有人能帮忙吗?下面是我在sandbox上的代码链接 在TweetForm.js中,在handleSubmit函数中,您必须使用spread操作符设置新的twe

我是React新手,我正在尝试在下面的教程中使用React上下文API来更新组件。最初,我使用json对象加载推文。在TweetForm组件中,在提交表单时,我通过使用setTweets函数预先添加一个新对象来更新这个tweets数组。当我控制台记录tweets数组时,它向我显示我的新tweet正在添加到数组中,但我的tweets没有更新

有人能帮忙吗?下面是我在sandbox上的代码链接


TweetForm.js
中,在
handleSubmit
函数中,您必须使用spread操作符设置新的tweet,如下所示:

setTweets([...newTweets]);

工作示例:

TweetForm.js
中,在
handleSubmit
函数中,您必须使用spread操作符设置新的tweet,如下所示:

setTweets([...newTweets]);

工作示例:

Hi Harish,这似乎在您的演示链接中起作用。你能简单地解释一下为什么我的解决方案不起作用,而你的解决方案起作用吗?提前谢谢!如果数据未嵌套,则spread操作符会生成数据的深度副本。当您在数组或对象中有嵌套数据时,spread操作符将创建最顶层数据的深度副本和嵌套数据的浅层副本。在
React
Redux
中,仅当通过
.setState()
reducer
检测到
状态变化时,您的应用程序才会更新。浅层副本可能会在调用其中任何一个之前更改状态,因此在调用它们时,旧状态将显示为与新状态相同,并且您的元素不会更新。在工作示例中,我们使用
spread
运算符,因此根据上述语句,React`知道状态已更改
,并再次调用
render()
方法。由于您是React新手,请先尝试了解React生命周期。。希望它能解决您的疑问,如果是的话,您可以接受答案。嗨,哈里什,这似乎是在您的演示链接工作。你能简单地解释一下为什么我的解决方案不起作用,而你的解决方案起作用吗?提前谢谢!如果数据未嵌套,则spread操作符会生成数据的深度副本。当您在数组或对象中有嵌套数据时,spread操作符将创建最顶层数据的深度副本和嵌套数据的浅层副本。在
React
Redux
中,仅当通过
.setState()
reducer
检测到
状态变化时,您的应用程序才会更新。浅层副本可能会在调用其中任何一个之前更改状态,因此在调用它们时,旧状态将显示为与新状态相同,并且您的元素不会更新。在工作示例中,我们使用
spread
运算符,因此根据上述语句,React`知道状态已更改
,并再次调用
render()
方法。由于您是React新手,请先尝试了解React生命周期。。希望它能解决您的疑问,如果是,您可以接受答案。