簡體   English   中英

從表單外部訪問 react-final-form 值

[英]Access react-final-form values from outside the form

我有一個反應最終形式的表格。 該組件公開了 values 字段。 此字段包含表單內更改的所有字段。 問題是,我想從外部訪問這些值。

     <Form onSubmit={onSubmit} render={({handleSubmit,values}) => 
       ...
       {JSON.stringify(values)} <- this works
     </Form>
<div>
{JSON.stringify(values)} <- this is outside, it doesn't work
</div>

我想避免為了能夠訪問這些值而將所有內容都塞進表單中。 有什么方法可以在外部訪問它,或者以某種方式至少從外部傳遞一個值/setValues 以使這些值在表單之外可見?

我發現在表單外獲取表單 state 的最簡單方法是使用MutableRefObject來獲取對表單內可用的表單實例的引用。

實現這一目標的步驟:

  1. 創建一個MutableRefObject (它基本上只是一個可以更改current值的ref object)
const formRef: React.MutableRefObject<FormApi> = useRef(null);

如果你有表單的接口,你可以像這樣添加表單接口來獲取我們可以通過這個參考訪問的屬性的類型:

const formRef: React.MutableRefObject<FormApi<IForm, Partial<IForm>>> = useRef(null);
  1. <Form>中,將form實例附加到我們剛剛創建的MutableRefObject上:
<Form onSubmit={onSubmitHandler}>
    {({ handleSubmit, submitting, form, dirty }) => {
        // form reference to access for outside
        formRef.current = form;
  1. 現在您可以使用formRef訪問Final Form Docs - 'FormAPi'中描述的所有屬性,如下所示:
formRef.current.getFieldState();
formRef.current.change('fieldName',"value");

解釋:

該方法本質上創建了一個ref object 並將form實例附加到 object,並且由於它是一個MutableRefObject ,因此可以對其進行更改而不會導致重新渲染。 現在,可以從任何地方訪問和控制整個表格 state 以及對表格的修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM