相关疑难解决方法(0)

React - 将表单元素状态传递给兄弟/父元素的正确方法?

  • 假设我有一个React类P,它呈现两个子类C1和C2.
  • C1包含一个输入字段.我将此输入字段称为Foo.
  • 我的目标是让C2对Foo的变化作出反应.

我想出了两个解决方案,但他们都没有感觉到.

第一解决方案

  1. 分配P状态,state.input.
  2. onChange在P中创建一个函数,它接收一个事件并设置state.input.
  3. 将此传递onChange给C1作为a props,让C1绑定this.props.onChange到onChangeFoo.

这有效.每当Foo的值改变时,它会触发一个setStateP,所以P将输入传递给C2.

但由于同样的原因,它感觉不太正确:我正在从子元素设置父元素的状态.这似乎背叛了React的设计原则:单向数据流.
这是我应该怎么做的,还是有更多的React-natural解决方案?

二解决方案:

把Foo放在P.

但是,当我构建我的应用程序时,我应该遵循这个设计原则 - 将所有表单元素放入render最高级别的类中吗?

就像在我的例子中,如果我有一个大的C1渲染,我真的不想把整个renderC1放到renderP只是因为C1有一个表单元素.

我该怎么办?

reactjs

175
推荐指数
5
解决办法
12万
查看次数

标签 统计

reactjs ×1