我如何在父组件中访问状态
这是我在做的事情(只是一个简短的代码,请忽略语法(
class Parent {
<listComponent
onSelect: handler
>
handler() {
// Do this only if the already opened ChildComp in not dirty
<ChildComp>
}
}
// Uses react-final-form
class ChildComp {
<form
onSubmit: handleSubmit
render: renderForm
>
renderForm ({dirty}){
// Assigning to a class variable and prompting for unsaved changes which I am able to do
this.isFormDirty = dirty
return(
<InputField>
);
}
</form>
}
现在的问题是,如果孩子在OnSelect Handler((中肮脏((,我无法通知父母不要渲染孩子。我不能在渲染方法中进行setState,至少我可以使用componentDidupdate通知预先感谢
从问题#551复制:
另一种可能性是,最近有一个API更改,使您可以将自己的表单实例提供给<Form>
,因此类似的事情可以起作用:
import { createForm } from 'final-form'
function TestForm() {
const formRef = React.useRef(createForm({
onSubmit: myOnSubmit
})
return (
<div>
<Form form={formRef.current}>
{({ handleSubmit, form }) => (
<form onSubmit={handleSubmit}> ... fields ... </form>
)}
</Form>
<button onClick={() => formRef.current.reset()}>Reset</button>
</div>
)
}