React:将状态从孩子传递到孩子再传递给父母

Posted

技术标签:

【中文标题】React:将状态从孩子传递到孩子再传递给父母【英文标题】:React: Passing state from child to child to parent 【发布时间】:2018-06-29 01:43:32 【问题描述】:

我试图通过 2 个子元素将值传递给父元素。链条看起来像这样:

Child1 > Child2 > Parent

但是,我的父处理程序没有获取 Child1 中的值。我试图在父组件中控制台记录theString 的状态,但是没有显示任何内容。如何将处理函数传递给 child1 并获取其值以存储在状态中?

孩子 1

  <input ref="theString" type="string" onChange=this.props.handleChangeOfString value=this.state.theString />

子 2 组件

<Tab tabId="4">
   this.props.nav4Content
   this.props.handleChangeOfString
</Tab>

构造函数:

constructor(props) 
    super(props);
    this.state = 
       theString: ''
    ;
    this.handleChangeOfString = this.handleChangeOfString.bind(this);

父级组件:

<StringComponent
  nav4Content=colorsTab
  onChange=this.handleChangeOfString
/>

处理程序:

handleChangeOfString(e) 
  this.setState(theString: e.target.value)

【问题讨论】:

【参考方案1】:

问题是您如何将道具从child2 传递到child1。您不是将值作为道具传递,而是作为 child2 组件中的 children 传递。改成

<Tab 
   tabId="4" 
   nav4Content=this.props.nav4Content 
   handleChangeOfString=this.props.onChange
/>  

【讨论】:

这不是调用处理函数成功。我正在尝试注销处理程序中的更改,但没有任何内容传递给它。 你的child1组件是Tab,或者child1是如何从child2渲染出来的 我不得不像你说的那样重新设计我的组件并更新道具!

以上是关于React:将状态从孩子传递到孩子再传递给父母的主要内容,如果未能解决你的问题,请参考以下文章

React,如何从父母那里访问孩子的状态?无需更新父母的状态

React context api,将数据从孩子传递给父母

将数据从孩子传递给祖父母

问题:为什么在我为孩子设置状态时,React为什么更新我的父母?仅发生在数组

反应孩子正在通过道具改变父母状态......我不清楚原因

Vue - 将数据从孩子传递给父母 - 基本发射不起作用