将表单元素状态传递给同级父元素的正确方法是什么?

将表单元素状态传递给同级父元素的正确方法是什么?,第1张

将表单元素状态传递给同级/父元素的正确方法是什么?

因此,如果我对您的理解正确,那么您的第一个解决方案是建议您将状态保留在根组件中?我不能代表React的创建者,但是总的来说,我发现这是一个合适的解决方案。

保持状态是创建React的原因之一(至少在我看来)。如果您曾经实现自己的状态模式客户端来处理具有很多相互依赖的动态部件的动态UI,那么您会喜欢React的,因为它减轻了很多这种状态管理的麻烦。

通过在层次结构中进一步保持状态,并通过事件对其进行更新,您的数据流仍然几乎是单向的,您只是在响应Root组件中的事件,实际上并没有通过两种方式绑定那里的数据,您要告诉Root组件“嘿,这里发生了什么事,请检查值”,或者您要向上传递子组件中某些数据的状态以更新状态。您在C1中更改了状态,并且希望C2知道它,因此,通过更新Root组件中的状态并重新渲染,由于C2的道具在Root组件中进行了更新并传递了,因此C2的道具现在处于同步状态。

class Example extends React.Component {  constructor (props) {    super(props)    this.state = { data: 'test' }  }  render () {    return (      <div>        <C1 onUpdate={this.onUpdate.bind(this)}/>        <C2 data={this.state.data}/>      </div>    )  }  onUpdate (data) { this.setState({ data }) }}class C1 extends React.Component {    render () {      return (        <div>          <input type='text' ref='myInput'/>          <input type='button' onClick={this.update.bind(this)} value='Update C2'/>        </div>      )    }    update () {      this.props.onUpdate(this.refs.myInput.getDOMNode().value)    }})class C2 extends React.Component {    render () {      return <div>{this.props.data}</div>    }})ReactDOM.renderComponent(<Example/>, document.body)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5020160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存