我有一个简单的以React-
Redux为动力的表格。我希望有一个form.container.tsx和form.component.tsx,其中form.container.tsx保留了到redux状态减去Field的所有连接。我试图将我的容器包装在react-
redux的connect中,然后将reduxForm包装在其中,使其看起来像TypeScript,redux-
form和connect:
(理想)form.container.tsx:
interface DummyFormContainerProps {}
export const DummyFormContainer: React.SFC<DummyFormContainerProps> = props => {
const submitForm = (formValues: object) => {
alert(formValues);
};
return (
<DummyForm
onSubmit={submitForm}
/>
);
};
const mapStateToProps = (state: State) => ({});
const mapDispatchToProps = (dispatch: object) => {
return {};
};
const mergeProps = (stateProps: State, dispatchProps: object | null, ownProps: object | void) =>
Object.assign({}, stateProps, dispatchProps, ownProps);
const formConfiguration = {
form: 'dummy-form',
forceUnregisterOnUnmount: true
};
export default connect(mapStateToProps, mapDispatchToProps)(
reduxForm(formConfiguration)(DummyFormContainer)
);
上面的方法不起作用,但是如果我取出reduxForm()部分,则会剩下一个没有reduxForm Integration的工作容器:
(无需reduxForm即可工作)form.container.tsx:
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(
DummyFormContainer
);
而且我已经尝试了reduxForms和connect的不同变体,但所有这些都不起作用:
(带有类)form.container.tsx:
export class DummyFormContainer extends React.Component<DummyFormContainerProps, void> {
submitForm = (formValues: object) => {
alert(formValues);
}
render() {
return (
<DummyForm
onSubmit={this.submitForm}
/>
);
}
}
const mapStateToProps = (state: State) => ({});
const mapDispatchToProps = (dispatch: object) => {
return {};
};
const mergeProps = (stateProps: State, dispatchProps: object | null, ownProps: object | void) =>
Object.assign({}, stateProps, dispatchProps, ownProps);
const formConfiguration = {
form: 'business-registration',
};
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(
reduxForm(formConfiguration)(DummyFormContainer) // ERROR
);
错误:
./src/modules/dummy-form/dummy-form.container.tsx
(100,32): error TS2345: Argument of type 'typeof DummyFormContainer' is not assignable to parameter of type 'ComponentType<InjectedFormProps<{}, {}>>'.
Type 'typeof DummyFormContainer' is not assignable to type 'StatelessComponent<InjectedFormProps<{}, {}>>'.
Type 'typeof DummyFormContainer' provides no match for the signature '(props: InjectedFormProps<{}, {}> & { children?: ReactNode; }, context?: any): ReactElement<any> | null'.
(具有无状态功能组件)form.container.tsx:
export const DummyFormContainer: React.SFC<DummyFormContainerProps> = props => {
const submitForm = (formValues: object) => {
alert(formValues);
};
return (
<DummyForm
onSubmit={submitForm}
/>
);
};
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(
reduxForm(formConfiguration)(DummyFormContainer) // ERROR
);
错误:
./src/modules/dummy-form/dummy-form.container.tsx
(100,3): error TS2345: Argument of type 'DecoratedComponentClass<{}, Partial<ConfigProps<{}, {}>>>' is not assignable to parameter of type 'ComponentType<(State & null & void) | (State & null & object) | (State & object & void) | (State ...'.
Type 'DecoratedComponentClass<{}, Partial<ConfigProps<{}, {}>>>' is not assignable to type 'StatelessComponent<(State & null & void) | (State & null & object) | (State & object & void) | (S...'.
Type 'DecoratedComponentClass<{}, Partial<ConfigProps<{}, {}>>>' provides no match for the signature '(props: (State & null & void & { children?: ReactNode; }) | (State & null & object & { children?: ReactNode; }) | (State & object & void & { children?: ReactNode; }) | (State & object & { children?: ReactNode; }), context?: any): ReactElement<any> | null'.
form.component.tsx看起来像这样:
import * as React from 'react';
import Input from '../../components/input';
interface DummyFormProps {
onSubmit: (formValues: object) => void
}
export const DummyForm: React.SFC<DummyFormProps> = () => {
return (
<div>
<h1>DummyForm (no state)</h1>
<form>
<Input inputType="primary" />
</form>
</div>
);
};
export default DummyForm;
并且组件是常规的React组件。
有谁知道如何正确连接reduxForm和react-redux的connect()?
我还遇到了这个问题,尝试按照https://redux-
form.com/7.0.4/examples/initializefromstate/中
的示例从redux状态初始化我的表单
我最终通过在更高级别连接组件来解决它,例如:
component.tsx:
interface DummyFormComponentProps {} extends InjectedFormProps
const DummyFormComponent: React.SFC<DummyFormComponentProps> = props => {
return (
<form onSubmit={props.handleSubmit}>
// Fields go here
</form>
)
}
export const DummyForm = reduxForm({
form: "dummy-form"
})(DummyFormComponent)
// Trying to connect here also gave errors with DecoratedComponentClass
container.tsx:
interface DummyFormContainerProps {} extends Pick<InjectedFormProps,
"initialValues"
>
const submitForm = (formValues: object) => {
alert(formValues);
};
const DummyFormContainer: React.SFC<DummyFormContainerProps> = props => {
return (
<DummyForm
initialValues={props.initialValues}
onSubmit={submitForm}
/>
)
}
const mapStateToProps = (state: State) => ({
initialValues: {}
});
const mapDispatchToProps = (dispatch: object) => {
return {};
};
export default connect(mapStateToProps, mapDispatchToProps)(DummyFormContainer)
React/Typescript中对象的类型是什么,例如: 如果我需要将它定义为一个对象,我应该输入什么类型,而不是
我相信我不是唯一一个对React的钥匙系统感到困惑的人。此问题主要关注添加道具的包容性情况。 我所做的相关阅读包括: > 肯特·多德理解反应的关键支柱 了解React.js数组子元素的唯一键 根据Adhiti Ravichandran的说法,迭代中的键有助于识别哪些项已更改(添加/删除/重新排序) 考虑以下电影组件: 而被调用来解析一个新的键,以下面为例:
我正在收集以下样本的样板: 反应16。x(来自CreateReact应用程序) 打字稿 带功能部件 通过上下文提供程序 我几乎已经解决了所有问题,但我似乎无法解决我遇到的这一个错误。我有一个像这样的MobX商店供应商 我得到的错误: 6:30警告@typescript eslint/explicit函数返回类型上缺少返回类型 6:33道具/道具类型中缺少错误“children” 如果你想把整个事情
在我的Angular应用程序中,我建立了一个服务,它从MongoDB获取一些数据作为json数组。这是我的服务代码: 在另一个组件中,我尝试订阅此服务,并将获取的数据存储到Idea数组(我建立的相应类)中。这是相应的代码: 现在出现以下类型错误: 错误:(19,59)TS2322:类型'Promise'不能分配给类型'idea[]'。在类型Promise中缺少属性包括。 非常感谢您的支持!
react-typescript 项目概况 使用Ant-Design开发的一套后台管理系统,主要用到了React、Typescript、Mobx、PWA等技术,使用webpack5打包构建,包含React16的一些新特性。 项目主要技术结构 react typescript antd mobx webpack4 react-router4 pwa 安装 在终端下操作 项目地址: (git clon
我有一个非常简单的功能组件,如下所示: 和另一个组成部分: 我不断发现以下错误: [ts]JSX元素类型“ReactNode”不是JSX元素的构造函数。类型“undefined”不可分配给类型“ElementClass”。[2605] 如何正确地键入此内容?