gpt4 book ai didi

reactjs - typescript 附加 Prop

转载 作者:行者123 更新时间:2023-12-04 08:56:43 36 4
gpt4 key购买 nike

我正在尝试使用 typescript 和 Formik 创建一个自定义输入字段。我可以就完成以下代码的最佳方式获得一些帮助吗?我需要添加额外的 Prop 标签和名称......我已经坚持了一段时间,希望我在这里遗漏了一些非常简单的东西!?

{/* {label && <label htmlFor={name} className="text-input-label">{label}</label>} */}
请参阅以下代码中的上述行。
import React from "react";
import styled from "styled-components";
import { FieldHookConfig, useField } from "formik";

interface AdditionalProps {
label: string;
name: string;
}

const MyTextInput = (props: FieldHookConfig<string>) => {
const [field, meta] = useField(props);
return (
<div className={"text-input " + props.className}>
{/* {label && <label htmlFor={name} className="text-input-label">{label}</label>} */}
<div className="card-backdrop">
<input {...field} placeholder={props.placeholder} />
</div>
</div>
);
};

export default styled(MyTextInput)``
谢谢!!!

最佳答案

如下创建一个新的 Prop 作为接口(interface),并在您的组件中使用它作为 Prop 类型

interface ComponentProps<T> {
config : FieldHookConfig<T>;
label: string;
name: string;
}
const MyTextInput = (props: ComponentProps<string>) => {}
因此,您可以在组件中使用您的 formik 配置(FieldHookConfig),如下所示 props.config.classNameprops.config.placeholder并且您可以使用其他 Prop ,例如 props.labelprops.name最后你的组件看起来像
import React from "react";
import styled from "styled-components";
import { FieldHookConfig, useField } from "formik";

interface ComponentProps<T> {
config : FieldHookConfig<T>;
label: string;
name: string;
}

const MyTextInput = (props: ComponentProps<string>) => {
const [field, meta] = useField(props.config);
return (
<div className={"text-input " + props.config.className}>
{props.label && <label htmlFor={props.name} className="text-input-label">{props.label}</label>}
<div className="card-backdrop">
<input {...field} placeholder={props.config.placeholder} />
</div>
</div>
);
};

export default styled(MyTextInput)

关于reactjs - typescript 附加 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63784708/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com