【发布时间】:2021-09-02 22:39:43
【问题描述】:
钩子通常比类好得多,所以我试图传递使用钩子在该父级的子级中设置父级状态的能力。具体来说,我正在做这样的事情:
class Parent extends Component {
render = () => {
return <>
<Child useRegisterFoo={foo => {...;this.setState(foo);...;}} />
{ renderBasedOnRegister() }
</>
}
}
目标是能够像这样定义孩子:
const Child = ({useRegisterFoo}) => {
useRegisterFoo(1);
useRegisterFoo(2);
}
我会定义很多这样的孩子,因此有这样一个简单的useRegisterFoo 来注册孩子的特定属性会非常有用。
问题是,如果以这种方式完成,反应会抱怨,这是可以理解的,因为我在渲染父级时正在修改父级的状态。具体来说:
Warning: Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.
解决这个问题有什么更好的方法?我的主要目标是让 API 从孩子的角度尽可能方便。
【问题讨论】:
标签: reactjs react-hooks purely-functional