javascript - Egenskapen 'submitAction' saknas i typen '{}' men krävs i typen
Jag försöker lära mig Redux-formulär och TypeScript men jag har stött på ett fel som jag inte kan lösa.
Felet är: Property 'submitAction' saknas i typen '{}' men krävs i typen 'Readonly
Här är där jag tror att felet är...
//Form.tsx
import * as React from 'react';
import { Input } from "../FormInput/FormInput";
import { Button } from "../FormButton/FormButton"
import { Validation } from "./FormValidation"
import { reduxForm, InjectedFormProps, Field } from 'redux-form';
import './formStyles.scss';
export interface IUser {
title: string;
description: string;
}
export interface IDispatchProps {
submitAction:() => any;
}
const Form = (props:IDispatchProps & InjectedFormProps<IUser, IDispatchProps>) => (
<div className="LoginFormWrapper">
<div className="bodyWrapper">
<Field
id="title"
name="title"
placeholder="Enter title"
type="text"
component={Input}
/>
<Field
id="description"
name="description"
placeholder="Enter description"
type="text"
component={Input}
/>
<div className="buttonWrapper">
<Button
text="Submit"
onClick={() => props.submitAction()}
isDisabled={props.invalid}
/>
</div>
</div>
</div>
);
export const FormEx = reduxForm<IUser, IDispatchProps>({
form: 'Form',
validate: Validation,
})(Form);
Felet visas här vid <FormEx />
import React from 'react';
import { connect } from 'react-redux';
import { createStream } from '../../actions';
import './formStyles.scss';
import { FormEx } from './Form/From';
interface StreamCreate {
createStream: any;
}
class StreamCreate extends React.Component<StreamCreate> {
render() {
return (
<div>
<h3>Create</h3>
<FormEx />
</div>
)
}
}
export default connect(null, { createStream })(StreamCreate);
Tack
Svar #1
Din Form-komponent har en obligatorisk submitAction-prop. (som definierad i ditt IDispatchProps-interface.)
Skicka vilken funktion som helst med typen () => any till din <FormEx />-komponent och felet bör försvinna.
Till exempel:
<FormEx submitAction={console.log("submit")} />
