Przenoszę formularz redux do najnowszej wersji 6.0.0rc3. W tej wersji tablica "fields" zniknęła i została zastąpiona przez komponent Field (patrz http://redux-form.com/6.0.0-rc.3/docs/MigrationGuide.md/). Kiedyś rozszerzyć domyślną funkcję onblur w v5 tak:Migrowanie formularzy redux do wersji v6, funkcje onBlur i onChange
const { user_zipcode } = this.props.fields;
onChange={
val => user_zipcode.onChange(this._handleZipcodeChange(val))
}
Jednak w nowej wersji nie można zrobić więcej, ponieważ this.props.fields
nie istnieje.
Z tego co znalazłem w docs, nowy sposób powinno być stworzenie komponentu dla każdego pola formularza, który ma odrębną funkcję i przedłużyć funkcję onblur tam:
_onBlur() {
// my custom blur-function
}
render() {
const { input, touched, error } = this.props;
return (
<input
className={styles.input}
{...input}
onBlur={() => {
// 2 functions need to be called here
this._onBlur();
input.onBlur();
}}
/>
);
}
To jest w porządku, z wyjątkiem że muszę utworzyć nowy element dla każdego pola, które musi zrobić coś innego, gdy nastąpi rozmycie. Na niektórych polach muszę nawiązać połączenie z API, które wykonuję, wysyłając akcję. Na przykład muszę to zrobić, aby uzyskać adres. W tych komponentach muszę podłączyć mój sklep, więc jest on wielokrotnie podłączony.
starałem się przekazać moje niestandardową funkcję od dominującej składowej pola, tak:
<Field
type="text"
name="user_zipcode"
component={Zipcode}
onBlurFunction={this._myBlurFunction}
/>
i coraz obie funkcje w moim składnika od rekwizytów:
...
onBlur={() => {
input.onBlurFunction();
input.onBlur();
}}
...
nie zrobił to” t działa poprawnie z powodu nowego React warning.
Czy jest lepszy sposób to zrobić?
Jak byś to zrobił, gdybyś używał domyślnego sposobu używania 'Field' jak wspomniano w przykładach:' '' '' '? Czy spróbowałeś też tego stylu? –
geoboy
Niektórzy znajdują rozwiązanie dla tego? – directory