在ReactJS中获取孩子的默认道具以在父母中设置状态

寒冷企鹅

类似于在React.js中将props传递给父组件,但是我只对将子组件的默认props传递给父组件感兴趣

那我为什么要这样做呢?

好吧,我有一个父组件,可渲染包含HTML表单的子组件。父级的render()方法应将其状态数据作为道具传递给子级。

最初,子表单应仅包含一些默认数据。从子组件中定义的defaultProps中获取数据是有意义的。毕竟,我不想在父母的状态下设置默认数据负载,其唯一目的是将其作为默认道具传递给孩子。父母无需定义孩子的默认道具。孩子应该知道自己的默认道具是什么。

因此,在我的初始父对象​​render()中,我将状态保留为未定义。当它作为未定义的道具传递给孩子时,孩子将使用其defaultProps代替。这就是我想要的。

时间流逝...

现在,用户可以更改子组件窗体上的字段。我通过回调函数将该更改传递回了父级,以便它重新计算父级的新状态。然后,我setState()在父级中调用a以照常重新渲染所有子级组件。

问题是我需要父母的状态为一个对象,其中包含更多嵌套的对象,并且正在使用[反应不可变性助手] [1]计算父母中的新状态,如下所示:

handleFormFieldChange(e) {
// reactUpdate imported from 'react-addons-update'
 var newState = reactUpdate(this.state, {
    formData: {values: {formFieldValues: {[e.currentTarget.name]: {$set: e.currentTarget.value}}}}
    });
    this.setState(newState);
}

这段代码第一次运行时,将引发错误,因为它正在尝试更新状态值,并且没有要更新的状态。(记住,我没有定义它!)

如果试图通过将默认初始状态设置为空对象(每个对象都嵌套有空对象)来解决此问题,则会遇到catch 22。在第一个渲染中,这些空值将作为空道具向下传递给子级,因此将覆盖我为子级组件设置的defaultProps。mm!

因此,据我所知,我需要一个明智的初始状态来传递给子组件,但又不能在父组件中再次(重新)定义整个组件。因此,在这种情况下,我认为将孩子的defaultProps拉入父级是很有意义的,只是为了设置父级的初始状态。

我有一种方法,稍后将发布。但是在我这样做之前,还有人有更好的方法吗?一个可以避免必须将defaultProps从子级传递到父级的方法吗?

多米尼克

如果您正在使用,React.ComponentdefaultProps该类是一个静态对象,因此很容易获得。

export default class Child extends React.Component {

  static defaultProps = { ... }

}

// If you don't have es7 static support you can add it after the class def:
Child.defaultProps = { ... }

父母只需要做:

Child.defaultProps

访问它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ReactJS中获取孩子的默认道具以在父母中设置状态

来自分类Dev

使用ReactJs中的道具从父母到孩子的数据无法正常工作

来自分类Dev

在SwiftUI中从孩子的孩子调用父母的函数

来自分类Dev

麻烦在reactjs中设置状态

来自分类Dev

如何在Angular中将道具孩子设置为父母?

来自分类Dev

如何获取特定父母的孩子(父母ID)并在家谱树中显示输出

来自分类Dev

从父母的 onClick 在 reactjs 上更新状态孩子

来自分类Dev

在ReactJS中获取状态中的搜索值

来自分类Dev

使用ReactJS中的逆向数据流,让孩子与父母进行交流的好方法是什么?

来自分类Dev

父母和孩子中的点击事件

来自分类Dev

根据父母集合中的孩子计算的财产

来自分类Dev

修改WordPress中父母和孩子的图标

来自分类Dev

Java-编辑父母名单中的孩子

来自分类Dev

根据父母集合中的孩子计算的财产

来自分类Dev

在LINQ中查找有孩子的父母记录

来自分类Dev

将孩子放在比自己窄的父母中

来自分类Dev

匹配每个父母中孩子的身高

来自分类Dev

ReactJS-在箭头函数中设置状态

来自分类Dev

在reactjs中动态更新/设置状态

来自分类Dev

如何在ReactJS的提取中设置状态?

来自分类Dev

如何在首次渲染之前在 redux 中获取数据并将其设置为默认状态

来自分类Dev

设置状态后,孩子会收到道具吗?

来自分类Dev

sql,从一张表中获取父母和孩子

来自分类Dev

通过道具将价值从无状态的孩子传递给父母

来自分类Dev

需要在反应导航中设置默认道具

来自分类Dev

将道具设置为子组件中的状态

来自分类Dev

为什么当我渲染孩子不在道具中时反应状态绑定不起作用

来自分类Dev

在ReactJS中传递道具

来自分类Dev

在 React 中从孩子更新状态

Related 相关文章

  1. 1

    在ReactJS中获取孩子的默认道具以在父母中设置状态

  2. 2

    使用ReactJs中的道具从父母到孩子的数据无法正常工作

  3. 3

    在SwiftUI中从孩子的孩子调用父母的函数

  4. 4

    麻烦在reactjs中设置状态

  5. 5

    如何在Angular中将道具孩子设置为父母?

  6. 6

    如何获取特定父母的孩子(父母ID)并在家谱树中显示输出

  7. 7

    从父母的 onClick 在 reactjs 上更新状态孩子

  8. 8

    在ReactJS中获取状态中的搜索值

  9. 9

    使用ReactJS中的逆向数据流,让孩子与父母进行交流的好方法是什么?

  10. 10

    父母和孩子中的点击事件

  11. 11

    根据父母集合中的孩子计算的财产

  12. 12

    修改WordPress中父母和孩子的图标

  13. 13

    Java-编辑父母名单中的孩子

  14. 14

    根据父母集合中的孩子计算的财产

  15. 15

    在LINQ中查找有孩子的父母记录

  16. 16

    将孩子放在比自己窄的父母中

  17. 17

    匹配每个父母中孩子的身高

  18. 18

    ReactJS-在箭头函数中设置状态

  19. 19

    在reactjs中动态更新/设置状态

  20. 20

    如何在ReactJS的提取中设置状态?

  21. 21

    如何在首次渲染之前在 redux 中获取数据并将其设置为默认状态

  22. 22

    设置状态后,孩子会收到道具吗?

  23. 23

    sql,从一张表中获取父母和孩子

  24. 24

    通过道具将价值从无状态的孩子传递给父母

  25. 25

    需要在反应导航中设置默认道具

  26. 26

    将道具设置为子组件中的状态

  27. 27

    为什么当我渲染孩子不在道具中时反应状态绑定不起作用

  28. 28

    在ReactJS中传递道具

  29. 29

    在 React 中从孩子更新状态

热门标签

归档